Thu*_*der 24 sql sql-server numbers
这是我认为一个简单的问题,但还没有得到解决方案.我想从这里解释的列中获取有效数字.
假设我们有一个varchar列,其中包含以下值
ABC
Italy
Apple
234.62
2:234:43:22
France
6435.23
2
Lions
Run Code Online (Sandbox Code Playgroud)
这里的问题是只选择数字
select * from tbl where answer like '%[0-9]%' 会做到但它会回来
234.62
2:234:43:22
6435.23
2
Run Code Online (Sandbox Code Playgroud)
在这里,显然,2:234:43:22是不可取的,因为它不是有效数字.
期望的结果是
234.62
6435.23
2
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
bea*_*ach 41
您可以使用以下内容仅包含有效字符:
SQL
SELECT * FROM @Table
WHERE Col NOT LIKE '%[^0-9.]%'
Run Code Online (Sandbox Code Playgroud)
结果
Col
---------
234.62
6435.23
2
Run Code Online (Sandbox Code Playgroud)
Adr*_*der 23
你可以试试这个
当输入表达式求值为有效的数值数据类型时,ISNUMERIC返回1; 否则返回0.
DECLARE @Table TABLE(
Col VARCHAR(50)
)
INSERT INTO @Table SELECT 'ABC'
INSERT INTO @Table SELECT 'Italy'
INSERT INTO @Table SELECT 'Apple'
INSERT INTO @Table SELECT '234.62'
INSERT INTO @Table SELECT '2:234:43:22'
INSERT INTO @Table SELECT 'France'
INSERT INTO @Table SELECT '6435.23'
INSERT INTO @Table SELECT '2'
INSERT INTO @Table SELECT 'Lions'
SELECT *
FROM @Table
WHERE ISNUMERIC(Col) = 1
Run Code Online (Sandbox Code Playgroud)
Dav*_*all 10
尝试这样的事情 - 它适用于你提到的案例.
select * from tbl
where answer like '%[0-9]%'
and answer not like '%[:]%'
and answer not like '%[A-Z]%'
Run Code Online (Sandbox Code Playgroud)