SQL Server

时间:2016-07-28 13:14:10

标签: sql-server

以下是我想要做的简化摘录:

SELECT StreetNumber + StreetName AS 'Address'
FROM TABLE
WHERE CONTAINS('Address', 'Street Name')

我意识到我不能在这里使用别名,因为WHERE子句是在SELECT子句之前计算的。

以下两种选择也不起作用:

1)

SELECT Street_Number + StreetName AS 'Address'
FROM TABLE
WHERE CONTAINS(CONCAT(StreetNumber, '', StreetName), 'Street Name')

2)

SELECT Street_Number + StreetName AS 'Address'
FROM TABLE
WHERE CONTAINS(StreetNumber + ' ' + StreetName), 'Street Name')

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

我通常用子查询来处理它。我不喜欢将代码中的concat或row_number分配的代码复制并粘贴到子句中,所以我会这样处理:

Select Address From 
(
    SELECT StreetNumber + StreetName AS 'Address'
    FROM TABLE
) A
WHERE CONTAINS(Address, 'Street Name') 
-- Or maybe you really want  WHERE Address Like '%Street Name%'

我还认为阅读/维护此代码更容易。由于评论包含全文索引的作品,所以你真的可能正在寻找Charindex或Like。