为什么下面的查询不起作用?我需要获取以下每个数字的数据:
select *
from dbo.BAS_GDW_TMO_PARCEL_EBILL_ALL_ARCHIVE_AUDIT_RESULT_TBL
where TMO_TRACK_NBR in (964855234, 141329655, 138150364, '3F3857')
答案 0 :(得分:0)
您正在TMO_TRACK_NBR
中混合类型。 select *
from dbo.BAS_GDW_TMO_PARCEL_EBILL_ALL_ARCHIVE_AUDIT_RESULT_TBL
where TMO_TRACK_NBR in ('964855234', '141329655', '138150364', '3F3857');
列表仅支持一种类型的值。如果混合字符串和数字,则字符串将转换为数字。并且您收到错误,因为该字符串不代表有效数字。
不要混合类型。使用适当的类型进行比较。如果files
是一个字符串,请对所有值使用字符串:
gridfs-stream
答案 1 :(得分:0)
根据hte SQL IN文档https://docs.microsoft.com/en-us/sql/t-sql/language-elements/in-transact-sql
是要测试匹配的表达式列表。 所有表达式必须与test_expression 的类型相同。
您正在IN
子句中测试整数值(964855234)和字符串(' 3F3857')。
您必须检查数据类型是TMO_TRACK_NBR列并使用正确的数据类型测试数据
答案 2 :(得分:0)
in子句中的所有数据都应该是相同的类型
所以应该是这个
select *
from dbo.BAS_GDW_TMO_PARCEL_EBILL_ALL_ARCHIVE_AUDIT_RESULT_TBL
where TMO_TRACK_NBR in ('964855234', '141329655', '138150364', '3F3857')
或者
select *
from dbo.BAS_GDW_TMO_PARCEL_EBILL_ALL_ARCHIVE_AUDIT_RESULT_TBL
where TMO_TRACK_NBR in (964855234, 141329655, 138150364, 3F3857)
答案 3 :(得分:0)
由于TMO_TRACK_NBR可以包含F,它告诉我它不是INT。 如果你不在其他数字周围加上引号,IN操作会尝试将它们全部转换为INT(包括' 3F3857')。
select *
from dbo.BAS_GDW_TMO_PARCEL_EBILL_ALL_ARCHIVE_AUDIT_RESULT_TBL
where TMO_TRACK_NBR in ('964855234', '141329655', '138150364', '3F3857')
下次放错误应该是好的。 我想你得到了:
Conversion failed when converting the varchar value '3F3857' to data type int.
答案 4 :(得分:0)
定义,请注意您在条件中使用两种类型的数据。
JOIN
就这样:
country_id