我對postgres很陌生,想知道如何使用上(或下)函數對錶進行排序以進行不區分大小寫的搜索。我知道我可以做些什麼:在Postgres中使用UPPER和LOWER排序
where b.name ~* '%Example%'
但是,該方法使我的查詢有點慢。所以我想嘗試下面的內容。
假設表b
是這樣的:
order | name
1 | Example
2 | example
3 | EXAMPLE
4 | ExAmPlE
每當我使用查詢:
set schema 'schem';
select UPPER(b.name),
from b
where b.name like UPPER('%Example%');
什麼它歸結爲是查詢本身。每當where子句是:
where b.name like UPPER('%Example%');
沒有顯示。
where b.name like UPPER('%E%');
Example
,EXAMPLE
和ExAmPlE
顯示全部大寫。
where b.name like UPPER('%EXAMPLE%');
只有EXAMPLE
顯示。
也許我不是理解postgres的權利,但upper
函數只顯示其參數的所有大寫數據?我認爲發生的事情是我的查詢將採用所有的例子,強制它們全部大寫,然後where子句也將被強制爲大寫,因此無論何時我使用上述的任何where
子句,這些查詢中的每一個都會吐出表b
中的所有內容。
我不得不使用格式where b.name ~* '%Example%'
還是我只是誤解了這一點?
你必須使用的函數兩側爲:'其中大寫(b.name)像UPPER( '%示例%' )' –