Tsql 使用XML验证Excel并移动到SQL Server目标
是否有内置函数(与UDF相反),或者有人可以提供示例代码,在遇到字符时将字符串拆分为两列? 样本: 1234:abcdTsql 使用XML验证Excel并移动到SQL Server目标,tsql,Tsql,是否有内置函数(与UDF相反),或者有人可以提供示例代码,在遇到字符时将字符串拆分为两列? 样本: 1234:abcd 将上面的字符串拆分为1234和abcd两列试试这个。它并不漂亮,但会生成两列(假设:始终是分隔符): 换句话说,它不是内置函数,而是内联sql代码。标题/标记不匹配 对于Excel,如果A1包含以下值: 使B1=LEFT(A1,IF(iError(FIND(“:”,A1)),LEN(A1),FIND(“:”,A1)-1)) 使C1=RIGHT(A1,IF(iError(FIND
将上面的字符串拆分为1234和abcd两列试试这个。它并不漂亮,但会生成两列(假设:始终是分隔符): 换句话说,它不是内置函数,而是内联sql代码。标题/标记不匹配 对于Excel,如果
A1
包含以下值:
使B1
=LEFT(A1,IF(iError(FIND(“:”,A1)),LEN(A1),FIND(“:”,A1)-1))
使
C1
=RIGHT(A1,IF(iError(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
为选择
;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语句。你的建议很有帮助。非常感谢。
;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