查询某列第一、二位是否有数字?
Query to find whether first and second positions of a column has numbers?
如果我的列具有 varchar 值,例如
07SNBYDT
20NETHRR
23198BER
12837930
BEYTRETY
1245YHTY
在上面的值中,我只需要在 first 和 second 位置有数字的条目和 [=18 中的字母=]第三位位
例如:07SNBYDT
我的预期输出是
07SNBYDT
20NETHRR
SELECT Col
FROM Table
WHERE ASCII(SUBSTRING(Col, 0, 1)) > XX AND ASCII(SUBSTRING(Col, 0, 1)) < YY
AND ASCII(SUBSTRING(Col, 1, 1)) > XX AND ASCII(SUBSTRING(Col, 1, 1)) < YY
AND (ASCII(SUBSTRING(Col, 2, 1)) < XX OR ASCII(SUBSTRING(Col, >, 1)) > YY)
其中 XX 是 ASCII (0) 且 YY 是 ASCII(9)
使用like
:
select t.*
from t
where col like '[0-9][0-9][a-zA-Z]%';
select *
from table
where isnumeric(substring(col,1,1)) = 1
and isnumeric(substring(col,2,1)) = 1
and substring(col,3,1) LIKE '[a-zA-Z]%'
如果我的列具有 varchar 值,例如
07SNBYDT
20NETHRR
23198BER
12837930
BEYTRETY
1245YHTY
在上面的值中,我只需要在 first 和 second 位置有数字的条目和 [=18 中的字母=]第三位位
例如:07SNBYDT
我的预期输出是
07SNBYDT
20NETHRR
SELECT Col
FROM Table
WHERE ASCII(SUBSTRING(Col, 0, 1)) > XX AND ASCII(SUBSTRING(Col, 0, 1)) < YY
AND ASCII(SUBSTRING(Col, 1, 1)) > XX AND ASCII(SUBSTRING(Col, 1, 1)) < YY
AND (ASCII(SUBSTRING(Col, 2, 1)) < XX OR ASCII(SUBSTRING(Col, >, 1)) > YY)
其中 XX 是 ASCII (0) 且 YY 是 ASCII(9)
使用like
:
select t.*
from t
where col like '[0-9][0-9][a-zA-Z]%';
select *
from table
where isnumeric(substring(col,1,1)) = 1
and isnumeric(substring(col,2,1)) = 1
and substring(col,3,1) LIKE '[a-zA-Z]%'