我有一个表格,其中包含一个字符串,例如:
xx-xx-xxx-84
xx-25-xxx-xx
xx-xx-123-xx
我想继续查询数字,但正如您所看到的,数字每次都放在字符串的不同位置。是否只能查询字符串中的数字?
谢谢你, 我很感激你的时间!
答案 0 :(得分:0)
这需要重复应用字符串函数。一种有助于所有嵌套的方法是使用OUTER APPLY
。像这样:
select t3.col
from t outer apply
(select t.*, patindex(t.col, '[0-9]') - 1 as numpos) t1 outer apply
(select t1.*, substring(t1.col, t1.numpos, len(t1.col)) as col2) t2 outer apply
(select t2.*,
(case when col2 like '%-%'
then substring(t2.col, charindex('-', t2.col))
else t2.col
end) as col3
) t3
答案 1 :(得分:0)
简单的方法(确定只有'x'和' - '在字符串中):
SELECT REPLACE(REPLACE(s,'x',''),'-','') FROM T
或者X
可以是任何非数字字符,然后使用PATINDEX() function:
SELECT S, SUBSTRING(S,
PATINDEX('%[0-9]%',s),
PATINDEX('%[0-9][^0-9]%',s)
+PATINDEX('%[0-9]',s)
+1
-PATINDEX('%[0-9]%',s)) as digit
FROM T