Sql 将任何运算符与字符串函数一起使用

Sql 将任何运算符与字符串函数一起使用,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想构建一个如下的查询: SELECT * FROM T1 WHERE Charindex(ANY(SELECT City FROM Cities),T1ADDRESS)>0 据我所知,ANY运算符不能保留为SQL函数参数。那么,替代方案是什么 假设我想编写一个UDF,它根据一个输入参数地址返回1或0。如果不使用for循环运算符,也不访问按索引从城市中选择城市数组,我该如何执行此操作,因为在过程语言中可以轻松完成此操作?您可能希望执行类似操作 SELECT * FROM T1 WHERE

我想构建一个如下的查询:

SELECT * FROM T1 WHERE Charindex(ANY(SELECT City FROM Cities),T1ADDRESS)>0
据我所知,
ANY
运算符不能保留为SQL函数参数。那么,替代方案是什么


假设我想编写一个UDF,它根据一个输入参数地址返回1或0。如果不使用
for
循环运算符,也不访问
按索引从城市中选择城市
数组,我该如何执行此操作,因为在过程语言中可以轻松完成此操作?

您可能希望执行类似操作

SELECT * FROM T1 WHERE Charindex in (SELECT '%'+City+'%' FROM Cities)
它可以解决任何问题,但不是你要求的所有问题。

怎么样

SELECT 
              * 
    FROM 
            T1 
    WHERE
        EXISTS
        (
            SELECT City FROM Cities WHERE T1.T1ADDRESS LIKE '%' + City + '%' 
        )

您是否尝试过
加入

SELECT * 
FROM T1
INNER JOIN CITIES
    ON T1ADDRESS LIKE '%' + City + '%'

但是,不确定性能…

您不应该在
WHERE
子句中的列上使用函数。@LukasEder T-SQL for SQL Server我想您可能正在寻找
LIKE
运算符。请注意
LIKE
运算符和UDF对性能都不是很好。如果城市在地址之外正常化,则会很有用。不是,IN运算符会找到精确匹配,但我想找到一个子字符串匹配更新为子字符串问题。虽然这是解决方案的一部分,但我并不了解你的全部问题。