MySQL查询问题?求大神解救,急等

mysql 版本:5.7.20

图片说明

SELECT
    id,
    facility_id,
    pdf_id,
    pg_class,
    template_path
FROM
    pdf_template
WHERE
    facility_id = 1
AND pdf_id = '5%3B--ABCD--+a'

图中所示,pdf_id为int类型,在查询时给的值为“5%3B--ABCD--+a”,竟然查询出5对应的数据。这是为什么?

5个回答

我也试了一下,会有截断双精度的警告
Truncated incorrect DOUBLE value : '5%3B--ABCD--+a'

Leonards_1998
L.Guo 回复bb_love_dd: 查到了,可以用concat(),将你的语句改为concat(pdf_id) = '5%3B--ABCD--+a' 就行了,你试试
一年多之前 回复
Leonards_1998
L.Guo 回复bb_love_dd: 我觉得只能将单引号去掉,热后报错,强制用户输入纯数字
一年多之前 回复
u014469767
bb_love_dd 有没有什么设置,可以让这个完全相等的匹配。
一年多之前 回复

因为你pdf_id 是int型,然而你给的是一个以数字开头的字符串,它就直接忽略了之后面的除数字以外的字符串

qq_36720114
德玛洗牙 回复bb_love_dd: 如果需要完全匹配,只需要把pdf_id改为varchar型就可以了撒
一年多之前 回复
u014469767
bb_love_dd 有没有什么设置,可以让这个完全相等的匹配。
一年多之前 回复

%号是特殊字符应该需要转义

有可能是只识别开头的数字吧

是int,但你又用引号?到底想做什么?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问