【发布时间】:2014-01-28 01:51:12
【问题描述】:
我创建了一个表格,其中包含一个名为“Notes”的 nvarchar 字段,人们可以输入他们想要的任何内容(数字或文本)以帮助他们进行搜索。
例如
Table "Customer"
ID Name Notes
1 AAA 1234
2 BBB 1235
3 CCC 1236
4 DDD ABCD
根据这些数据,我只想为 1200 到 1300 之间的 Notes 编写 sql 查询,但它不允许我这样做,因为该字段还包含文本值。
我试过了
SELECT *
FROM Customer
WHERE ISNUMERIC(Notes) = 1 AND Notes > 1200 AND Notes < 1300
错误:将 nvarchar 值转换为 int 时转换失败
然后我尝试了这个,我认为这会起作用,但会出现同样的错误
SELECT *
FROM
(SELECT *
FROM Customers
WHERE ISNUMERIC(Notes) = 1
) A
WHERE A.Notes > 1200 AND A.Notes < 1300
有人可以帮忙吗?非常感谢
【问题讨论】:
-
用 varchar 表示数值是非常糟糕的做法。仔细想想你为什么需要它,你不能冗余地使用另一列吗?
标签: sql dynamic varchar isnumeric