[英]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.