T-SQL:在字符串中查找8位数字

时间:2017-11-28 23:31:39

标签: sql-server tsql substring

我想在字符串中输入前8位数字。例如,需要在所有下面的字符串中获得49691234。试图使用PatIndex&子串函数但没有得到我想要的结果。请指教

示例:

'hello world # 49691234 - black fox'
'black fox # 49691234'
'black fox 49691234 hello'

2 个答案:

答案 0 :(得分:1)

您可以使用patindex()

select substring(col, patindex('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', col), 8),
from t;

答案 1 :(得分:0)

您也可以使用ngrams8k

-- sample data
declare @yourtable table(txt varchar(40));
insert @yourtable values
('hello world # 49691234 - black fox'),
('black fox # 49691234'),
('black fox 49691234 hello');

-- solution
select * 
from @yourtable t
cross apply dbo.NGrams8k(t.txt,8)
where token not like '%[^0-9]%';

<强>结果

txt                                      position             token
---------------------------------------- -------------------- ----------
hello world # 49691234 - black fox       15                   49691234
black fox # 49691234                     13                   49691234
black fox 49691234 hello                 11                   49691234