我在T-SQL中为SQL Server编写了以下查询
SELECT
CASE
WHEN ADDR_LINE_1 REGEXP '^[0-9]'
THEN SUBSTRING(ADDR_LINE_1,1,CHARINDEX(' ',ADDR_LINE_1))
ELSE NULL
END AS HOUSE_NUMBER
FROM CUSTOMER
我想要的是,如果列ADDR_LINE_1以数字开头,我想从中提取HOUSE_NUMBER。但是现在我的查询给出了一个解析错误。如果我用LIKE替换单词REGEXP,则解析错误消失,但我总是为HOUSE_NUMBER获取NULL。我的查询的正确语法是什么?
答案 0 :(得分:1)
如何使用LIKE
SELECT
CASE
WHEN ADDR_LINE_1 Like '%[0-9]%'
THEN SUBSTRING(ADDR_LINE_1,1,CHARINDEX(' ',ADDR_LINE_1))
ELSE NULL
END AS HOUSE_NUMBER
FROM CUSTOMER
答案 1 :(得分:1)
您可以像这样使用ISNUMERIC
和LEFT
。
SELECT
CASE WHEN ISNUMERIC(LEFT(ADDR_LINE_1, 1)) = 1
THEN SUBSTRING(ADDR_LINE_1, 1, CHARINDEX(' ', ADDR_LINE_1))
ELSE NULL
END AS HOUSE_NUMBER
FROM CUSTOMER