带数值搜索的SQL查询varchar字段
我创建了一个表,其中有一个名为“Notes”的nvarchar字段,人们可以输入任何他们想要的数字或文本来帮助搜索 比如说带数值搜索的SQL查询varchar字段,sql,dynamic,varchar,isnumeric,Sql,Dynamic,Varchar,Isnumeric,我创建了一个表,其中有一个名为“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
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
有人能帮忙吗?非常感谢试试这个:
SELECT *
FROM Customer
WHERE (case when ISNUMERIC(Notes) = 1 then cast(Notes as float) end) > 1200 AND
(case when ISNUMERIC(Notes) = 1 then cast(Notes as float) end) < 1300
或者,这可能接近您想要的:
SELECT *
FROM Customer
WHERE ISNUMERIC(Notes) = 1 AND
Notes > '1200' AND Notes < '1300' and len(notes) = 4 and notes not like '%.%'
在varchar中表示数值是非常糟糕的做法。仔细想想你为什么需要它,难道你不能重复使用另一个专栏吗。
SELECT *
FROM Customer
WHERE ISNUMERIC(Notes) = 1 AND
Notes > '1200' AND Notes < '1300' and len(notes) = 4 and notes not like '%.%'