SQL:将列值拆分为两列

时间:2015-12-15 05:24:16

标签: sql sql-server sql-server-2008

我有一张桌子tbl1

如何将列值拆分10(字符数)

FROM:

Column1            
Butuan City Philippines
Zamboanga City Philippines
Manila City Philippines

TO:

Column1           Column2
Butuan Cit        y Philippines
Zamboanga         City Philippines
Manila Cit        y Philippines

4 个答案:

答案 0 :(得分:3)

您可以使用SUBSTRING()功能:

SELECT SUBSTRING(Column1, 1, 10) AS Column1,
    SUBSTRING(Column1, 11, LEN(Column1) - 10) AS Column2
FROM yourtable

请注意,我们不必担心在子字符串中使用大于Column1,q.v的长度的索引。 documentation表示:

  

如果start [second parameter]大于值表达式中的字符数,则返回零长度表达式。

  

如果start和length的总和大于表达式中的字符数,则返回从start开始的整个值表达式。

答案 1 :(得分:0)

使用LEFTSUBSTRING字符串函数。试试这个

DECLARE @str VARCHAR(100) = 'Zamboanga City Philippines'

SELECT LEFT (( @str ), 10),
       Substring (( @str ), 10 + 1, Len(@str)) 

答案 2 :(得分:0)

您可以使用LEFTLENSUBSTRING

SELECT LEFT(Column1,10) AS 'Column1'

SELECT SUBSTRING(Column1, LEN(LEFT(Column1,10)) + 1, LEN(Column1)) AS 'Column2'

合并两个查询:

SELECT LEFT(Column1,10) AS 'Column1', 
       SUBSTRING(Column1, LEN(LEFT(Column1,10)) + 1, LEN(Column1)) AS 'Column2'

答案 3 :(得分:0)

您可以使用SQL的in-build SUBSTRING()函数来实现预期的结果。

对于例如

from django.db.models import Q

query = mymodel.filter(Q(name="Foo",foreignkey_property1="Bar") && Q(foreignkey_property2="Zap"))