SQL:拆分列值分为两列
我有一个表TBLSQL:拆分列值分为两列
我怎么能由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
您可以使用SUBSTRING()
功能:
SELECT SUBSTRING(Column1, 1, 10) AS Column1,
SUBSTRING(Column1, 11, LEN(Column1) - 10) AS Column2
FROM yourtable
请注意,我们不必担心在子字符串中使用的索引大于Column1
q.v.的长度。 documentation其中规定:
如果start [第二个参数]大于值表达式中的字符数,则返回零长度表达式。
和
如果起点和长度的总和比在表达的字符数时,则返回开始处开始整个值表达式。
如果给出一个静态长度,如果列值长度增加,它不会发生错误?如果列值是'Llanfairpwllgwyngyll' –
您的问题对我没有意义,但我相信我的答案会起作用,而不需要诉诸'LEFT()'或除SUBSTRING()之外的任何辅助函数。 –
使用LEFT
和SUBSTRING
字符串函数。试试这个
DECLARE @str VARCHAR(100) = 'Zamboanga City Philippines'
SELECT LEFT ((@str), 10),
Substring ((@str), 10 + 1, Len(@str))
可以使用LEFT
,LEN
和SUBSTRING
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'
您可以使用,打造SUBSTRING()功能SQL来实现您的预期结果。
例如,
IF (LEN(Column1) > 10)
BEGIN
SELECT SUBSTRING(Column1, 1, 10) AS Column1,SUBSTRING(Column1, 11, LEN(Column1) - 10) AS Column2
FROM <TABLE>
END
lookup substring() –
你想在列2中的y? –