mysql查询出来用单引号_mysql – 在SQL查询中使用单引号

我有以下SQL查询:

SELECT id_zam AS test,

CASE WHEN (SELECT something FROM sth WHERE id_something = test) = 1

THEN

'true'

ELSE

'false'

END as test_result

FROM testTable

等于1.因此CASE语句为TRUE所以它将执行THEN语句,这是’true’

但是,当我在别名测试周围添加单引号时,如下所示:

SELECT id_zam AS 'test',

CASE WHEN (SELECT something FROM sth WHERE id_something = 'test') = 1

THEN

'true'

ELSE

'false'

END as test_result

FROM testTable

查询返回’false’.任何人都可以解释为什么他们不同?

最佳答案 单引号(或撇号,如果您愿意)用于表示字符串(有时是日期),但不是整数值.

我假设你的id_something是一个整数变量.如果是这种情况,问题在于您尝试将整数与字符串进行比较,该字符串将始终返回false.

在第一个示例中,您选择了一个整数并为其提供了别名测试.进行比较时,您要比较两个有效的整数.但是,一旦你将它改为’test’,你现在就有一个字符串,它与id_zam没有任何关系.对整数和字符串进行比较时,默认情况下返回false.

编辑

这对于别名是正确的,但不一定都是真的.在这个例子中,是,test是一个别名,’test’是一个字符串文字,所以它们将被区别对待.但是,根据MySQL默认值,单引号不会影响其他项的比较.例如,如果您的条件为1 =’1′,则返回true.有关其他说明,请参阅此答案的评论.

要重新强调和简化,如果要使用别名比较某些内容,请不要使用单引号.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值