这是两张桌子。
CREATE TABLE INTKEYTBL
(
INTKEY INT IDENTITY(1,1) NOT NULL,
DUMMY_TEXT VARCHAR(2000) NULL
)
CREATE TABLE REFKEYTBL
(
REFID INT NOT NULL,
REFKEY VARCHAR(20) NOT NULL,
REF_TEXT VARCHAR(2000) NULL
)
然后,我需要使用REFKEYTBL.REF_TEXT
引用密钥获取INTKEYTBL.INTKEY
。
SELECT REF_TEXT
FROM REFKEYTBL
WHERE REFKEY IN (SELECT CONVERT(VARCHAR(15), INTKEY)
FROM INTKEYTBL
WHERE DUMMY_TEXT = 'DUMMY')
但查询中没有结果。
我将转换函数VARCHAR(15)
的类型更改为VARCHAR(20)
,
我可以在此查询中看到任何结果。
我想知道为什么我应该准确设置类型和长度来比较每个值?
答案 0 :(得分:0)
如果REFKEYTBL.REFKEY中的所有文本都是数字,请使用此查询:
Select REFKEYTBL.REF_TEXT FROM REFKEYTBL INNER JOIN INTKEYTBL
ON Convert(INT,REFKEYTBL.REFKEY) = INTKEYTBL.INTKEY
答案 1 :(得分:0)
尝试使用CAST
http://sqlfiddle.com/#!3/5f96a/1
SELECT REF_TEXT
FROM REFKEYTBL
WHERE REFKEY IN (SELECT CAST(INTKEY as VARCHAR(15))
FROM INTKEYTBL
WHERE DUMMY_TEXT = 'DUMMY')