#mysql
#mysql
Вопрос:
Следующий результат запроса mysql возвращает 'TRUE'
,
select if('testString' in ( 0 ), 'TRUE', 'FALSE') from sampleTable
Кто-нибудь может объяснить, почему, пожалуйста?
Комментарии:
1. Это связано с правилами кастинга MySQL. Обратите внимание, что
'testString' IN ('0')
то, что вы должны были написать, на самом деле является false .2. Какие значения
testString
имеет?3.@vivek_23
'testString'
является значением.4. @TimBiegeleisen Тогда почему OP написал
from sampleTable
?5. Потому что запрос плохой и не имеет смысла.
Ответ №1:
Вы можете попробовать использовать
select cast('testString' AS UNSIGNED) from dual ; // return 0
сделайте факт, потому что приведение для ‘testString’ КАК НЕПОДПИСАННОГО равно = 0
затем
select if( 'testString' in ( 0 ), 'TRUE', 'FALSE') from DUAL ;
сопоставьте для приведенного значения 0 в (0) и верните TRUE
Комментарии:
1. В идеале в вашем ответе также должно быть указано, что сравнение строк с целыми числами не имеет смысла, и фактически в большинстве других баз данных запрос OP даже не будет компилироваться.