使用LOWER进行Oracle查询

时间:2011-01-13 17:02:25

标签: sql oracle

为什么这会返回0行

SELECT GARTUSERID, USER_CODE, UNITID, RANKCODE, RANKID, FIO, LOGINNAME, 
       START_DATE, EXPIR_DATE, NOTE, POSITION, ISCHGPASSWORD, IS_EXPIRDATE,
       IS_BLOCKED, ROW_ID
  FROM ACONTROL.GARTUSERS
 WHERE LOWER(LOGINNAME)=LOWER(:LOGIN) AND ROW_ID=:MD5PSWD

然后返回1行(正如我想要的第一个查询)?

SELECT GARTUSERID, USER_CODE, UNITID, RANKCODE, RANKID, FIO, LOGINNAME,
       START_DATE, EXPIR_DATE, NOTE, POSITION, ISCHGPASSWORD, IS_EXPIRDATE,
       IS_BLOCKED, ROW_ID 
  FROM ACONTROL.GARTUSERS
 WHERE LOGINNAME=:LOGIN AND ROW_ID=:MD5PSWD

2 个答案:

答案 0 :(得分:2)

这可能是LOGINNAME的数据类型冲突吗?尝试使用VARCHAR2,而不是CHAR,因为它用空格填充字符串。

答案 1 :(得分:0)

您可以使用TRIM关键字来终止空格,因为varchar的类型使用LIKE代替'='进行比较。