DB2 SQL 不区分大小写

Mic*_*ael 2 sql db2 ibm-midrange

我正在通过 SQL Server 执行以下 DB2 SQL(因此需要在 DB2 SQL 中):

exec ('
  select 
    TRIM (vhitno) AS "Item",
    TRIM (mmitds) AS "Description",
    TRIM (SUBSTRING (vhitno,12,4)) AS "Size",
    vhalqt AS "Available"
  from m3fdbtest.oagrln
    left outer join m3fdbtest.mdeohe 
      on vhcono = uwcono 
        and vhcuno = uwcuno 
        and vhagno = uwagno 
        and vhitno = uwobv1
    left outer join m3fdbtest.mitmas 
      ON vhcono = mmcono 
        AND vhitno = mmitno
    where uwcono = 1
      and uwstdt >= ?
      and uwlvdt <= ?
      and uwcuno = ''JBHE0001''
      and uwagst = ''20''
      and (vhitno LIKE ''%'' || ? || ''%''
        or mmitds LIKE ''%'' || ? || ''%'')',
  @From, @To, @Search, @Search) at M3_TEST_ODBC
Run Code Online (Sandbox Code Playgroud)

但是,DB2 区分大小写 - 如何使 mmitds 和 vhitno 上的两个 LIKE 不区分大小写?

jma*_*phy 6

你可以使用这样的东西:

where UPPER(mycol) like '%' || UPPER(?) || '%'
Run Code Online (Sandbox Code Playgroud)

注意:这可能会影响索引选择,但您可以像这样创建索引:

create index MYINDEX on MYTABLE (UPPER(mycol))
Run Code Online (Sandbox Code Playgroud)

如果您使用 RPG 中嵌入的 SQL,则可以将程序设置为使用不区分大小写的排序和比较

SET OPTION SRTSEQ=*LANGIDSHR;
Run Code Online (Sandbox Code Playgroud)

要使用 JDBC 执行此操作,您需要设置以下驱动程序属性:

"sort" = "language"
"sort language" = Your language code, I use "ENU"
"sort weight" = "shared"
Run Code Online (Sandbox Code Playgroud)

对于 ODBC 连接,您需要设置以下连接属性:

SORTTYPE = 2
LANGUAGE = your language code, I use ENU
SORTWEIGHT = 0
Run Code Online (Sandbox Code Playgroud)