1

我有一个名为“testTable”的表,它有两列,“id”是自动递增的,“someValue”。

'someValue' 列中包含的数据是:12, 1.2, .4, 1d4, +, -, .

我只想选择数值。但是当我使用以下查询时:

SELECT someValue, ISNUMERIC(someValue) 
FROM testTable;

所有的价值观都是真实的。对于查询:

SELECT * FROM testTable 
WHERE ISNUMERIC(someValue) = 1;

所有的值都被返回。

我只是想要12和。1.2.4

我怎样才能做到这一点?

更新:

该列的数据类型someValuevarchar(50)

4

1 回答 1

5

设置:

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, '.')

询问:

SELECT * FROM SomeTable WHERE ISNUMERIC(Value+'d0')=1

结果:

ID  VALUE
1   12
2   1.2
3   .4
于 2013-01-28T16:14:42.780 回答