如何从以下列中的第六个字段获取值?我试图让333场:从包含多个分隔值的列中提取一个值
ORGPATHTXT
2123/2322/12323/111/222/333/3822
我相信我有使用select substring
,但我不确定如何。如果你正在使用MySQL来格式化查询
如何从以下列中的第六个字段获取值?我试图让333场:从包含多个分隔值的列中提取一个值
ORGPATHTXT
2123/2322/12323/111/222/333/3822
我相信我有使用select substring
,但我不确定如何。如果你正在使用MySQL来格式化查询
,那么你可以使用:
select substring_index(orgpathtxt, '/', 6)
让我只是说在大多数其他数据库中它不太方便。
假设SQL服务器
我能想到的最简单的方法是创建一个分裂基于“/”拆分功能,您提取第六项类似下面
declare @text varchar(50) = '2123/2322/12323/111/222/333/3822'
select txt_value from fn_ParseText2Table(@text, '/') t where t.Position = 6
我使用了this url中的函数。 See it worked at SQLFiddle
试试这个 - 一个字符串variable
或包裹成一个function
与选择查询使用(Sql-Demo)
Declare @s varchar(50)='2123/2322/12323/111/222/333/3822'
Select @s = right(@s,len(@s)- case charindex('/',@s,1) when 0 then len(@s)
else charindex('/',@s,1) end)
From (values (1),(2),(3),(4),(5)) As t(num)
Select case when charindex('/',@s,1)>0 then left(@s,charindex('/',@s,1)-1)
else @s end
--Results
333
这怎么可能被放入一个函数在列上工作? –
@TimLehner:只适用于字符串变量。否则,选择列表必须放入游标/循环,并使用此方法将结果填入临时表中。 – Kaf
我想提供一个使用CROSS APPLY
分裂任何分隔字符串的解决方案在MSSQL和ROW_NUMBER()
返回第六个元素。这里假设你有一个ORGPATHTXT表作为一个字段(它可以很容易地转换,而不表的工作,虽然):
SELECT ORGPATHTXT
FROM (
SELECT
Split.a.value('.', 'VARCHAR(100)') AS ORGPATHTXT,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY (SELECT 1)) RN
FROM
(SELECT ID, CAST ('<M>' + REPLACE(ORGPATHTXT, '/', '</M><M>') + '</M>' AS XML) AS String
FROM MyTable
) AS A
CROSS APPLY String.nodes ('/M') AS Split(a)
) t
WHERE t.RN = 6;
下面是一些示例Fiddle与它一起去。
祝你好运。
当我尝试使用这个时,我收到一条消息,说非法名字字符 –
这是一个XML解析器错误,我相信 - 你确定数据总是以上述格式?你有没有试过我的SQL小提琴? – sgeddes
数据可以是字母或数字,长度可变 –
对于SQL,您可以使用
declare @string varchar(65) = '2123/2322/12323/111/222/333/3822'
select substring(string,25,27) from table_name
这个字段中的值是可变的,所以我怀疑这会工作 –
为什么'sql'与SQL Server关联? – Kermit
您也可以使用sys.dm_fts_parser
DECLARE @s nvarchar(50) = '2123/2322/12323/111/222/333/3822'
SELECT display_term
FROM sys.dm_fts_parser('"'+ @s + '"', 1033, NULL, 0)
WHERE display_term NOT LIKE 'nn%' AND occurrence = 6
哪个RDBMS您使用的动态管理功能选项? –
对不起,我使用SQL –
这是否意味着Microsoft的SQL Server?如果是这样,哪个版本? –