【发布时间】:2017-12-27 08:28:46
【问题描述】:
我有一个很大的字符串值,我希望将其放入数据库中。我有当前的代码可以做到这一点。
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
这使我可以将所有内容放在 |进入第 1 列,然后 / 进入第 3 列。 我需要尝试将所有内容放在值“|”之间和 '/' 进入第 2 列
我很难得到
,SUBSTRING(Value, CHARINDEX('|', Value) + 1, LEN(Value)) AS [col2]
只取两个字符之间的值。
将运行的字符串类型的示例是
1234567890|再见残酷的世界/我应该在第3栏, 2345678901|再见残酷的世界/我应该在第3栏, 3456789012|再见残酷的世界/请把我放在第3栏, 3456789012|再见残酷的世界/请把我在第 3 列,6324589657|你好世界/我需要在第 3 列,1145698763|再见残酷世界/我应该在第 3 列,36985214728|再见残酷世界/我应该在第 3 列,7412589635|再见残酷世界/我应该在第 3 栏 7412589635|再见残酷的世界/我应该在第 3 栏 6398756951|请帮助我/请把我放在第 3 栏,
字符串将采用该格式,我刚刚将值更改为更有趣的内容。
任何帮助将不胜感激。
使用 微软 SQL Server 2012 (SP3)
【问题讨论】:
标签: sql sql-server sql-server-2012 substring charindex