我有一个很大的字符串值,我正在寻找放入数据库。我有当前的代码来做到这一点。在字符串SQL服务器中的两个字符之间选择值
DECLARE @Value NVARCHAR(max) = {status}
DECLARE @DYVALUE TABLE (VALUE NVARCHAR(MAX))
INSERT INTO @DYVALUE (value)
SELECT @VALUE
;WITH cte
AS (
SELECT Split.a.value('.', 'VARCHAR(1000)') AS Value
FROM (
SELECT CAST('<S>' + REPLACE(Value, ',', '</S><S>') + '</S>' AS XML) AS Value
FROM @DyValue
) AS A
CROSS APPLY Value.nodes('/S') AS Split(a)
)
insert into mytable
SELECT *
FROM (
SELECT replace(LTRIM(SUBSTRING(Value, 0, CHARINDEX('|', value))),' ','') AS col1
,SUBSTRING(Value, CHARINDEX('|', Value) + 1, LEN(Value)) AS [col2]
,SUBSTRING(Value, CHARINDEX('/', Value) + 1, LEN(Value)) AS [col3]
FROM Cte
) dt
这使我可以放置之前的一切|到第一列,以及第三列之后的所有内容。 我需要尝试将所有内容放在值'|'之间和“/”成列2
我挣扎着爬
,SUBSTRING(Value, CHARINDEX('|', Value) + 1, LEN(Value)) AS [col2]
到只需要两个字符之间的值。
字符串类型的例子这将是上运行的是
1234567890 |再见残酷的世界/我应该在第3栏第2345678901 |再见残酷的世界/我应该在第3栏第3456789012 |再见残忍的世界/请把我置于第3栏,3456789012 |再见残酷的世界/请把我置于第3栏,6324589657 | Hello World /我需要在Col 3,1145698763 |再见残酷的世界/我应该在第3栏,36985214728 |再见残酷的世界/我应该在第3列,7412589635 |再见残酷的世界/我应该在列3,7412589635 |再见残酷的世界/我应该在列3,6398756951 |请帮助我/请把我放进第3栏,
该字符串将采用该格式,我刚将这些值更改为稍微有趣的值。
任何帮助将不胜感激。
使用 的Microsoft SQL Server 2012(SP3)
我希望它永远是三个词,词的数量会有所不同抱歉。 – Phil
@菲尔 - 这是一个例子..现在检查 –
类似于上面的答案,我得到错误 “无效的长度参数传递给左或SUBSTRING函数” 当试图运行此 – Phil