Jor*_*dan 3 mysql database syntax
我只是想知道是否有人知道之间的区别:
select*from database.user_table WHERE user_id-'user';
和
select*from database.user_table WHERE user_id ='user';
两者似乎都有效,但是,它们会返回不同的结果.
谢谢!
这取决于什么类型user_id.假设它是一个字符串,那么:
WHERE user_id = 'user'
Run Code Online (Sandbox Code Playgroud)
将返回行所在user_id的字符串'user'(或者可能使用大写字母,具体取决于数据库和列的排序规则).
当你这样做时:
WHERE user_id - 'user'
Run Code Online (Sandbox Code Playgroud)
然后发生了两件事.如果表达式求值为0或(NULL),则过滤掉该行.这相当于WHERE user_id - 'user' <> 0.
这-是一个数字运算符,因此两个值都转换为数字.MySQL使用静默转换方法,其中转换前导"数字".因此,'user'转换为0(没有前导数字或数字类型字符). 'user_id'也将被转换.在这种情况下,基本上任何user_id以数字开头的都将通过测试(以及以小数点开头的大多数).
如果user_id是整数,则与之user_id = 'user_id'相同user_id = 0.和user_id - 'user'是一样的user_id <> 0.