我有以下查询返回0结果,我知道这是错误的。但不知道什么是我的语法。查询SQL IN中的字符串列表
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结果,我知道这是错误的。但不知道什么是我的语法。查询SQL IN中的字符串列表
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一些转换。
尝试使用SQL Cast,以便将苹果与苹果进行比较。我不能确定哪个DBMS您使用,但语法应该与此类似:
select * from SJT_USER where SJT_USER_NAME in (select CAST(USER_NAME AS NVARCHAR2) from NON_MEMBER);
CHAR或NCHAR是固定长度,使其与SJT_USER_NAME由空格填充,使其充满了255个字符。比较两者时有两种选择。您可以修剪或使用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,以确保安全。
这两个答案到目前为止可能解决您的问题,但如果这不只是一次性,你应该考虑使用外键和加入两个表。 –