MYSQL查询中的子字符串索引问题
我试图找出一个数值是否介于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' 选择* 从测试单元查找 哪里 表格_relationship='Parent' 及( 子字符串索引之间的“101”('scale\u raw\u score','-',1) 和子字符串索引(`scale\u raw\u score`、'-'、-1) ) 和scale='SCI' 但它返回了两列 1-2 100-101 1-2 100-101MYSQL查询中的子字符串索引问题,mysql,Mysql,我试图找出一个数值是否介于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_I
为什么它返回1-2知道为什么吗?您正在进行字符串比较,而实际上您想要比较数字。就字符串而言,
'101
'确实介于'1'
和'2'
1-2
考虑改变这一点:
'101' BETWEEN SUBSTRING_INDEX(`scale_raw_score`,'-', 1)
AND SUBSTRING_INDEX(`scale_raw_score`,'-', -1)
致:
在之间的左侧使用一个数字而不是字符串应该足以指示MySQL您希望将值作为数字而不是字符串进行比较
:
SELECT '101' BETWEEN '1' AND '2'
|101介于“1”和“2”之间|
| ----------------------: |
| 0 |
您正在进行字符串比较,而实际上您想要比较数字。就字符串而言,'101
'确实介于'1'
和'2'
考虑改变这一点:
'101' BETWEEN SUBSTRING_INDEX(`scale_raw_score`,'-', 1)
AND SUBSTRING_INDEX(`scale_raw_score`,'-', -1)
致:
在
之间的左侧使用一个数字而不是字符串应该足以指示MySQL您希望将值作为数字而不是字符串进行比较
:
SELECT '101' BETWEEN '1' AND '2'
|101介于“1”和“2”之间|
| ----------------------: |
| 0 |
您正在比较字符串(不是数字)。您正在比较字符串(不是数字)。谢谢。除了0的情况外,你的建议都很有效。当我尝试使用“0”进行检查时,它从我的数据库中给出了不匹配的结果。所以我们是否需要将(consider)作为特例。@sruthy123:0
有什么问题?您可以在我提供的fiddlde中尝试这一点,它也起作用:在“0”和“102”之间选择0
`从hello\u查找中选择*,其中表单为“关系”='Parent',(子字符串索引(scale\u raw\u score
,'-',1)和子字符串索引(scale\u raw\u score
,'-',1))和scale='SCI'`。它给出的结果为空项,=102
0
和=102
和一些空项请给我一个刻度原始分数
的值,你可以得到0之间的未预期结果。。。还有…
。谢谢。除了0的情况外,你的建议都很有效。当我尝试使用“0”进行检查时,它从我的数据库中给出了不匹配的结果。所以我们是否需要将(consider)作为特例。@sruthy123:0有什么问题?您可以在我提供的fiddlde中尝试这一点,它也起作用:在“0”和“102”之间选择0
`从hello\u查找中选择*,其中表单为“关系”='Parent',(子字符串索引(scale\u raw\u score
,'-',1)和子字符串索引(scale\u raw\u score
,'-',1))和scale='SCI'`。它给出的结果为空项,=102
0
和=102
和一些空项请给我一个刻度原始分数
的值,你可以得到0之间的未预期结果。。。和…
。
SELECT 101 BETWEEN '1' AND '2'
| 101 BETWEEN '1' AND '2' |
| ----------------------: |
| 0 |