简体   繁体   English

如何小写postgresql数组?

[英]How to lowercase postgresql array?

I need to lowercase array content in PostgreSQL, lower(array['array_content'])) or array[lower('array_content'])) does not work.我需要在 PostgreSQL 中将数组内容小写, lower(array['array_content']))array[lower('array_content']))不起作用。 Actual array is much, much longer.实际数组要长得多。

SELECT * FROM kliendi_aadress WHERE lower(linn) LIKE ANY (array['Tallinn', 'Tartu','Narva'])

Can this even be done?这甚至可以做到吗?

好吧,ILIKE为我解决了这个问题

SELECT * FROM kliendi_aadress WHERE linn ILIKE ANY (array['Tallinn', 'Tartu','Narva']);

the first that come to mind is ugly:首先想到的是丑陋的:

db=# select lower(array['Tallinn', 'Tartu','Narva']::text)::text[];
         lower
-----------------------
 {tallinn,tartu,narva}
(1 row)

Here I lower text representation of your array and then cast it back to array.在这里,我lower了数组的文本表示,然后将其转换回数组。

And so comparison:所以比较:

db=# select 'tartu' = any (lower(array['Tallinn', 'Tartu','Narva']::text)::text[]);
 ?column?
----------
 t
(1 row)

The citext extension can come in handy in this situation. citext扩展在这种情况下可以派上用场。

-- If you haven't enabled citext in your DB
CREATE EXTENSION citext;
select 'tartu' = any (array['Tallinn', 'Tartu','Narva']::citext[])

should work.应该管用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM