Как я могу сделать Vertica В предикате без учета регистра?

#sql #vertica #case-insensitive

#sql #vertica #без учета регистра

Вопрос:

Я хотел бы сделать IN предикат моего запроса Vertica без учета регистра.

 select username from user where username in('Jim');
  

Я хотел бы, чтобы приведенный выше запрос возвращал записи типа:
ДЖИМ

Джим

Джим

Ответ №1:

Не существует способа сделать in нечувствительным к регистру. Вы могли бы связать воедино кучу ILIKE операторов, но лучшим способом было бы переписать ваш запрос с помощью LOWER строковой функции и поместить все элементы в IN предложении в нижнем регистре.

 SELECT username FROM user WHERE LOWER(username) IN ('jim');
  

Ответ №2:

Следующий пример запроса игнорирует регистр:

 DROP TABLE IF EXISTS test_case CASCADE;
CREATE TABLE test_case(f1 varchar(50));
COPY test_case(f1) FROM STDIN;
JIM
Jim
JiM
TestValue
.

SELECT * FROM test_case
WHERE f1 ilike 'Jim';