如何从字符串中获取reqnum?

皇家汉堡

我有一个表(pf1)和一个具有数据的列(comment)。我需要获取ReqNumber。

行示例

  CLIA::;ReqNum:1234567890:;PrfLab::;LabDep::;CtrlId::; Auth:NOT REQUIRED:

我需要在单独的列中获取1234567890。

谢谢。

艾伦·伯斯坦(Alan Burstein)

对于此要求,我在这里看到了很多矫kill过正。如果只是简单地获取字符串中的前10位数字,则可以执行以下操作:

当reqnum始终为10位数字时:

SELECT Item = SUBSTRING(@string,f.Pos,10)
FROM  (VALUES(PATINDEX('%'+REPLICATE('[0-9]',10)+'%', @string))) AS f(Pos);

使用NGrams8K(对于类似这样的东西以及更多东西很有用),您可以执行以下操作:

SELECT TOP (1) ng.Token
FROM   samd.NGrams8K(@string,10) AS ng
WHERE  PATINDEX('%[^0-9]%',ng.Token) = 0
ORDER BY ng.Position;

假设reqnum是可变长度,例如8到12位数长:

第一种技术更简单,第二种效率更高:

DECLARE @string VARCHAR(8000) = 
  'CLIA::;ReqNum:1234567890:;PrfLab::;LabDep::;CtrlId::; Auth:NOT REQUIRED:';

-- Technique #1
SELECT      SUBSTRING(@string,MAX(f.Pos),MAX(n.Rng))
FROM        (VALUES(12),(11),(10),(9),(8))                                AS n(Rng)
CROSS APPLY (VALUES(PATINDEX('%'+REPLICATE('[0-9]',n.Rng)+'%', @string))) AS f(Pos)
WHERE       f.Pos > 0;

-- Technique #2 (Better)
SELECT SUBSTRING(ns.Txt,1,f2.Pos)
FROM   (VALUES(PATINDEX('%'+REPLICATE('[0-9]',8)+'%',@string))) AS f(Pos)
CROSS APPLY (VALUES(SUBSTRING(@string,f.Pos,12)))               AS ns(Txt)
CROSS APPLY (VALUES(PATINDEX('%[^0-9]%',ns.Txt)-1))             AS f2(Pos)

当reqnum为任意长度并且假设字符串中只有一个数字序列时

该解决方案使用N-Grams拆分字符串。您可以为此使用delimitedSplit8k

SELECT TOP (1)
  ItemIndex = ng.Position+1,
  Item      = f.Item
FROM        samd.ngrams8k(@string,1)                                         AS ng
CROSS APPLY (VALUES(CHARINDEX(':',@string,ng.Position+1)))                   AS nxt(Pos)
CROSS APPLY (VALUES(SUBSTRING(@string,ng.Position+1,nxt.Pos-ng.Position-1))) AS f(Item)
WHERE       ng.Token = ':' AND PATINDEX('%[^0-9]%',f.Item)<PATINDEX('%[0-9]%',f.Item);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从字符串中获取数值?

来自分类Dev

如何从字符串中获取类型?

来自分类Dev

如何从字符串中获取数字

来自分类Dev

如何从字符串中获取年份?

来自分类Dev

如何从字符串中获取数字

来自分类Dev

如何从字符串中获取数值?

来自分类Dev

如何从字符串中获取数字

来自分类Dev

如何从字符串中获取数字

来自分类Dev

如何从字符串中获取json?

来自分类Dev

如何从字符串中获取“标签”?

来自分类Dev

如何从PowerShell中的字符串中获取交替字符?

来自分类Dev

如何从基于JavaScript中某些字符的字符串中获取子字符串?

来自分类Dev

R如何获取字符串中的字符列表

来自分类Dev

如何从字符串中获取单个Unicode字符

来自分类Dev

如何从输入字符串中获取字符数?

来自分类Dev

PHP:如何获取字符串中的重复字符

来自分类Dev

PHP:如何获取字符串中的重复字符

来自分类Dev

如何获取字符串C ++中字符的值?

来自分类Dev

如何快速从字符串的索引中获取特定字符

来自分类Dev

如何获取字符串中字符的位置?

来自分类Dev

如何获取字符串中的std :: set字符集,作为字符串?

来自分类Dev

如何从包含搜索到的字符串的字符串中获取字符序列

来自分类Dev

如何从Java中的字符串数组中获取项目?

来自分类Dev

如何在Spotfire中从字符串中获取数字

来自分类Dev

如何从python中的字符串中仅获取单词?

来自分类Dev

如何从Java中的混乱字符串中获取文本?

来自分类Dev

如何从拆分中获取路径中的字符串?

来自分类Dev

如何从jQuery中的文本中获取特定字符串?

来自分类Dev

如何从 JavaScript 中的字符串中获取数字

Related 相关文章

热门标签

归档