gpt4 book ai didi

DB2 区分大小写

转载 作者:行者123 更新时间:2023-12-04 23:31:53 27 4
gpt4 key购买 nike

我很难让我的 DB2 (AS/400) 查询不区分大小写。

例如:

SELECT *
FROM NameTable
WHERE LastName = 'smith'

不会返回任何结果,但以下返回 1000 个结果:
SELECT *
FROM NameTable
WHERE LastName = 'Smith'

我已经读过将 SortSequence/SortType 放入您的连接字符串中,但没有运气......有人对此有经验吗?

编辑:

这是存储过程:
BEGIN
DECLARE CR CURSOR FOR
SELECT T . ID ,
T . LASTNAME ,
T . FIRSTNAME ,
T . MIDDLENAME ,
T . STREETNAME || ' ' || T . ADDRESS2 || ' ' || T . CITY || ' ' || T . STATE || ' ' || T . ZIPCODE AS ADDRESS ,
T . GENDER ,
T . DOB ,
T . SSN ,
T . OTHERINFO ,
T . APPLICATION
FROM
( SELECT R . * , ROW_NUMBER ( ) OVER ( ) AS ROW_NUM
FROM CPSAB32.VW_MYVIEW
WHERE R . LASTNAME = IFNULL ( @LASTNAME , LASTNAME )
AND R . FIRSTNAME = IFNULL ( @FIRSTNAME , FIRSTNAME )
AND R . MIDDLENAME = IFNULL ( @MIDDLENAME , MIDDLENAME )
AND R . DOB = IFNULL ( @DOB , DOB )
AND R . STREETNAME = IFNULL ( @STREETNAME , STREETNAME )
AND R . CITY = IFNULL ( @CITY , CITY )
AND R . STATE = IFNULL ( @STATE , STATE )
AND R . ZIPCODE = IFNULL ( @ZIPCODE , ZIPCODE )
AND R . SSN = IFNULL ( @SSN , SSN )
FETCH FIRST 500 ROWS ONLY )
AS T
WHERE ROW_NUM <= @MAXRECORDS
OPTIMIZE FOR 500 ROW ;

OPEN CR ;
RETURN ;

最佳答案

为什么不这样做:

WHERE lower(LastName) = 'smith'

如果您担心性能(即查询不使用索引),请记住 DB2 具有函数索引,您可以阅读有关 here 的信息。 .所以基本上,你可以在 upper(LastName) 上创建一个索引。 .

编辑
要执行我在评论中讨论的调试技术,您可以执行以下操作:
create table log (msg varchar(100, dt date);

然后在您的 SP 中,您可以将消息插入此表以进行调试:
insert into log (msg, dt) select 'inside the SP', current_date from sysibm.sysdummy1;

然后在 SP 运行后,您可以从此日志表中进行选择以查看发生了什么。

关于DB2 区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908281/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com