针对数据库a的字符串类型的字段tj,如何这样查询?
该字段现在存储如下数据
id,tj
1 5
2 5c
3 阿
4 100
5 哈
======================================
查询tj所存数据中大于3小于100的数据,非数字内容都作为999看待。
该字段现在存储如下数据
id,tj
1 5
2 5c
3 阿
4 100
5 哈
======================================
查询tj所存数据中大于3小于100的数据,非数字内容都作为999看待。
Insert A Select 1,'5'
Union All Select 2,'5c'
Union All Select 3,'阿'
Union All Select 4,'100'
Union All Select 5,'哈'
GO
Select * From A Where IsNumeric(tj)=1 And tj>3 And tj<100
GO
Drop Table A
/*
ID tj
1 5
*/
大于3小于100并不是固定的,有时候会改变,还有这个值也是变化的,如果不变你怎么不直接输出5那条呢?
-----------------------
你看看我那條語句,就可以看到我不是沒有考慮非數字的語句的。
只要你的區間不會到999這裡時,你就可以直接用IsNumeric(tj)=1將所有的非數字的過濾掉。
Insert A Select 1,'5'
Union All Select 2,'5c'
Union All Select 3,'阿'
Union All Select 4,'100'
Union All Select 5,'哈'
GO
Select * From A Where IsNumeric(tj)=1 And tj>3 And tj<100
SELECT * FROM A WHERE ISNULL(STUFF(RTRIM(NULLIF(ISNUMERIC(tj),0)) + tj,1,1,''),999) BETWEEN 4 AND 99
GO
Drop Table A--这段可以将你非数字的值用任意指定的数值来代替ISNULL(STUFF(RTRIM(NULLIF(ISNUMERIC(tj),0)) + tj,1,1,''),999)