Har*_*rke 1 sql-server sql-server-2005 sql-server-2008
我有一个名为'testTable'的表,有两列,'id'是自动递增的,'someValue'.
'someValue'列中包含的数据是: 12, 1.2, .4, 1d4, +, -, .
我想只选择数值.但是当我使用以下查询时:
SELECT someValue, ISNUMERIC(someValue)
FROM testTable;
Run Code Online (Sandbox Code Playgroud)
所有的价值都是真的.并为查询:
SELECT * FROM testTable
WHERE ISNUMERIC(someValue) = 1;
Run Code Online (Sandbox Code Playgroud)
正在返回所有值.
我只想要12
,1.2
而且.4
.
我怎样才能做到这一点?
更新:
列的数据类型someValue
是varchar(50)
.
建立:
CREATE TABLE SomeTable
(
ID INT,
Value NVARCHAR(250)
)
INSERT INTO SomeTable (ID, Value) VALUES (1, '12')
INSERT INTO SomeTable (ID, Value) VALUES (2, '1.2')
INSERT INTO SomeTable (ID, Value) VALUES (3, '.4')
INSERT INTO SomeTable (ID, Value) VALUES (4, '1d4')
INSERT INTO SomeTable (ID, Value) VALUES (5, '+')
INSERT INTO SomeTable (ID, Value) VALUES (6, '-')
INSERT INTO SomeTable (ID, Value) VALUES (7, '.')
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT * FROM SomeTable WHERE ISNUMERIC(Value+'d0')=1
Run Code Online (Sandbox Code Playgroud)
结果:
ID VALUE
1 12
2 1.2
3 .4
Run Code Online (Sandbox Code Playgroud)