是否存在內置函數(而不是UDF),或者有人可以提供示例代碼以在遇到字符時將字符串分割爲兩列? 樣品:使用XML驗證Excel並移至SQL Server目標
1234:ABCD
分裂上面的字符串爲1234和ABCD爲兩列
是否存在內置函數(而不是UDF),或者有人可以提供示例代碼以在遇到字符時將字符串分割爲兩列? 樣品:使用XML驗證Excel並移至SQL Server目標
1234:ABCD
分裂上面的字符串爲1234和ABCD爲兩列
標題/標籤不匹配?
對於Excel,如果A1
包含值:
使B1
=LEFT(A1,IF(ISERROR(FIND(":",A1)),LEN(A1),FIND(":",A1)-1))
使C1
=RIGHT(A1,IF(ISERROR(FIND(":",A1)),0,LEN(A1)-FIND(":",A1)))
或爲T-SQL +一個字符串變量;
DECLARE @F VARCHAR(64) = '1234:ABCD'
IF @F LIKE '%:%'
SELECT SUBSTRING(@F, 1, CHARINDEX(':', @F, 1) - 1) AS COL1,
SUBSTRING(@F, CHARINDEX(':', @F, 1) + 1, LEN(@F)) AS COL2
ELSE
SELECT @F AS COL1, NULL AS COL2
for select;
;WITH faketable (fld) AS (
SELECT 'aaa:123' as fld
UNION SELECT 'ddddd'
)
SELECT
CASE WHEN fld LIKE '%:%' THEN SUBSTRING(fld, 1, CHARINDEX(':', fld, 1) - 1) ELSE fld END AS COL1 ,
CASE WHEN fld LIKE '%:%' THEN SUBSTRING(fld, CHARINDEX(':', fld, 1) + 1, LEN(fld)) ELSE NULL END AS COL2
FROM faketable
>COL1 COL2
>aaa 123
>ddddd NULL
我正在尋找一個簡單的tsql語句..你的建議幫助..感謝很多。 – Lrn 2011-06-07 18:22:40
有此一展身手。它不漂亮,但它產生的兩列(假設:總是分頻器):
declare @test varchar(20)
set @test = '1234:abcd'
select
leftcol = left(@test,charindex(':',@test)-1),
rightcol = right(@test,len(@test) - charindex(':',@test))
。換句話說,它不是在功能上構建的,但它是內聯SQL代碼。
是否總是冒號?它是否被丟棄以至於它都不在列中?冒號後總會出現任何字母?如果你通過編輯你的問題來展示所有可能的組合的例子,這可能會有所幫助。 – DOK 2011-06-07 16:41:44