我想在字符串中输入前8位数字。例如,需要在所有下面的字符串中获得49691234。试图使用PatIndex&子串函数但没有得到我想要的结果。请指教
示例:
'hello world # 49691234 - black fox'
'black fox # 49691234'
'black fox 49691234 hello'
答案 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