我是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的零行,我也不应该得到一个错误。