簡體   English   中英

當語句包含列表中的項目時,將其顯示在新列中

[英]When a statement contains an item in a list, show it in a new column

如果能為 sql 中的某些腳本提供一點幫助,我將不勝感激。所以我有一個如下所示的列表和一個數據庫表 -Table1,其中語句作為列名,我想創建一個名為位置的列,腳本可以在其中搜索在語句列中,一旦它在任何行中找到列表中的任何項目,它就會在位置列中說明

(特馬、倫敦、悉尼、德國、中國、非洲、)

Statement 
-------------------
Going to london
Apples in Tema
Sydney is a city
China is a country
Africa is a continent 

最后希望能看到這樣一張表:

陳述 地點
去倫敦 倫敦
特馬的蘋果 主題
悉尼是一座城市 悉尼
中國是一個國家 中國
非洲是一個大陸 非洲

通過使用這個腳本,

SELECT Statement, 
Case
WHEN Statement::text ~~* '%london%'::character varying::text
    THEN 'london'::character varying
      ELSE NULL::character varying
        END AS location
FROM Table1

我想我必須寫一個非常高大的腳本,但我想知道我是否可以通過一些高效且非常簡單的方法獲得幫助來實現這一目標

如果你有一個地點列表,你可以使用它:

select t1.*, v.place
from table1 t1 cross join
     (values ('tema'), ('london'), ('sydney'), ('germany'), ('china'), ('africa')
     ) v(place)
     on Statement::text ilike '%' || v.place || '%';

注意:您可能想使用正則表達式,以便可以包含工作邊界,但您的示例代碼不會這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM