我正在尝试查找mysql列值之间是否存在数值。 例如,我在mysql列中有一个值100-101,并且我正在寻找101是否与任何匹配。为此,我做了一个mysql查询
SELECT * FROM test_lookup WHERE form_relation ='Parent' AND ( '101' BETWEEN SUBSTRING_INDEX (`scale_raw_score`,'-', 1) AND SUBSTRING_INDEX(`scale_raw_score`,'-', -1) ) AND scale='SCI'
但是它返回了2列
1-2 100-101
为什么返回
1-2知道为什么吗?
答案 0 :(得分:0)
您正在进行字符串比较,而您实际上想比较数字。从字符串角度来看,'101
'实际上在'1'
和'2'
考虑更改此设置:
'101' BETWEEN SUBSTRING_INDEX(`scale_raw_score`,'-', 1)
AND SUBSTRING_INDEX(`scale_raw_score`,'-', -1)
收件人:
101 BETWEEN SUBSTRING_INDEX (`scale_raw_score`,'-', 1)
AND SUBSTRING_INDEX(`scale_raw_score`,'-', -1)
使用BETWEEN
左侧的数字代替字符串就足以表明MySQL您希望将数值作为数字而不是字符串进行比较。
SELECT '101' BETWEEN '1' AND '2'
| '101' BETWEEN '1' AND '2' | | ------------------------: | | 1 |
SELECT 101 BETWEEN '1' AND '2'
| 101 BETWEEN '1' AND '2' | | ----------------------: | | 0 |