我有以下查询返回0结果,我知道这是错误的。但是不确定我的语法是什么。
select * from SJT_USER where SJT_USER_NAME in
( select USER_NAME from NON_MEMBER);
SJT_USER_NAME
输入NCHAR(255 CHAR)
USER_NAME
输入NVARCHAR2(255 CHAR)
我猜我需要从NVARCHAR2转换到NCHAR。
答案 0 :(得分:0)
尝试使用SQL Cast,以便比较苹果和苹果。我不确定您使用的是哪个DBMS,但语法应与此类似:
select * from SJT_USER where SJT_USER_NAME in ( select CAST(USER_NAME AS NVARCHAR2) from NON_MEMBER);
答案 1 :(得分:0)
CHAR或NCHAR是固定长度的,因此SJT_USER_NAME用空格填充,因此它填满255个字符。比较两者时有两种选择。您可以TRIM或使用RPAD:
select * from SJT_USER where TRIM(SJT_USER_NAME) in ( select USER_NAME from NON_MEMBER);
或
select * from SJT_USER where TRIM(SJT_USER_NAME) in ( select RPAD(USER_NAME,255) from NON_MEMBER);
如果你有一个索引SJT_USER_NAME,那么后者可能更好。如果不考虑性能,我通常更喜欢在比较的两侧都有一个TRIM,只是为了安全起见。