SQL SUBSTRING 提取列的所有部分
SQL SUBSTRING to extract all parts of a column
我正在尝试使用 SQL SUBSTRING 方法从列中提取值。列中的值采用以下格式:VI_{13446F4A-DAC2-44AD-BDAB-86E6F2546DE6}_20220122T090159
。
我正在尝试获取由 _
字符分隔的所有子字符串。
我设法提取了第一部分,但我没有找到其他人使用的方法:
DECLARE @Str nchar(200);
SET @Str = 'VI_{13446F4A-DAC2-44AD-BDAB-86E6F2546DE6}_20220122T090159'
SELECT SUBSTRING(@Str, 1, CHARINDEX('_', @Str) -1) AS F1,
SUBSTRING(@Str, CHARINDEX('_', @Str)+1, LEN(@Str)) AS F2
上面的代码给我的 F1 正确,但 F2 不正确:
F1 = VI
F2 = {13446F4A-DAC2-44AD-BDAB-86E6F2546DE6}_20220122T090159
如何获得另外两个部分?
谢谢!
如果没有内联.
,我想你可以使用PARSENAME
DECLARE @original VARCHAR(255) = 'VI_{13446F4A-DAC2-44AD-BDAB-86E6F2546DE6}_20220122T090159'
DECLARE @new VARCHAR(255) = REPLACE(@original,'_','.')
SELECT PARSENAME(@new,3) as F1,
PARSENAME(@new,2) as F2,
PARSENAME(@new,1) as F3
我正在尝试使用 SQL SUBSTRING 方法从列中提取值。列中的值采用以下格式:VI_{13446F4A-DAC2-44AD-BDAB-86E6F2546DE6}_20220122T090159
。
我正在尝试获取由 _
字符分隔的所有子字符串。
我设法提取了第一部分,但我没有找到其他人使用的方法:
DECLARE @Str nchar(200);
SET @Str = 'VI_{13446F4A-DAC2-44AD-BDAB-86E6F2546DE6}_20220122T090159'
SELECT SUBSTRING(@Str, 1, CHARINDEX('_', @Str) -1) AS F1,
SUBSTRING(@Str, CHARINDEX('_', @Str)+1, LEN(@Str)) AS F2
上面的代码给我的 F1 正确,但 F2 不正确:
F1 = VI
F2 = {13446F4A-DAC2-44AD-BDAB-86E6F2546DE6}_20220122T090159
如何获得另外两个部分?
谢谢!
如果没有内联.
,我想你可以使用PARSENAME
DECLARE @original VARCHAR(255) = 'VI_{13446F4A-DAC2-44AD-BDAB-86E6F2546DE6}_20220122T090159'
DECLARE @new VARCHAR(255) = REPLACE(@original,'_','.')
SELECT PARSENAME(@new,3) as F1,
PARSENAME(@new,2) as F2,
PARSENAME(@new,1) as F3