我是SQL新手,並且有一個由數字和文本組成的字符串的表(例如,「10 Windows」) 。從這個表中,我需要從字符串中提取出「10」,並將其作爲整數移動到一個新列中(我使用的是pgAdmin4)如何在使用CAST和SUBSTRING時過濾postgresql中的查詢結果(pgAdmin 4)
我能夠編寫一個查詢來解析出數字該字符串並將它們作爲整數返回到新列。
SELECT data1, CAST(SUBSTRING(data1 FROM '(\d+)') AS INTEGER) AS data1_num
FROM events
從這裏,我可以從data1中的字符串中獲取數字,將其作爲data1_num列作爲整數。
但是,如果我想過濾找到所有行,其中data1_num = 27,通過下面的查詢,我得到一個錯誤。
SELECT data1, CAST(SUBSTRING(data1 FROM '(\d+)') AS INTEGER) AS data1_num
FROM events
WHERE data1_num = 27
錯誤:
ERROR: column "data1_num" does not exist
LINE 3: WHERE data1_num = 27
^
********** Error **********
ERROR: column "data1_num" does not exist
SQL state: 42703
Character: 205
我這麼想嗎?
我覺得這應該工作,即使data1_num是27的零行,我也不應該得到一個錯誤。