就像SQL中的通配符一样
我正在编写一段代码,其中提供了@Variant。我希望通过在变量(运行时)中捕获多个值并在WHERE子句中传递它们来存储多个值。同理就像SQL中的通配符一样,sql,where,Sql,Where,我正在编写一段代码,其中提供了@Variant。我希望通过在变量(运行时)中捕获多个值并在WHERE子句中传递它们来存储多个值。同理 DECLARE @Variant VARCHAR(50) SET @Variant='''25'',''33''' SELECT @Variant ---- which is actually '25','33' SELECT 'TRUE' WHERE '25' IN (@Variant) DECLARE @Variant VARCHAR(50) SET @V
DECLARE @Variant VARCHAR(50)
SET @Variant='''25'',''33'''
SELECT @Variant ---- which is actually '25','33'
SELECT 'TRUE' WHERE '25' IN (@Variant)
DECLARE @Variant VARCHAR(50)
SET @Variant='''25'',''33'''
SELECT @Variant ---- which is actually '25','33'
SELECT 'TRUE' WHERE '25' IN (SELECT @Variant)
以上查询不起作用
--DECLARE @Variant VARCHAR(50)
--SET @Variant='''25'',''33'''
--SELECT @Variant
SELECT 'TRUE' WHERE '25' IN ('25','33')
上面是SQL Server中一个更简单的查询——如果SQL接受,我会尝试使用它。我的实际查询是在WHERE子句中的LIKE语句中传递通配符
声明@Variant VARCHAR(50)
将@Variant='''25%''或[项目编号]设置为''33%''
选择@Variant从表1中选择*,其中[Item_No]类似(@Variant)——我认为@variable将在执行期间替换为它的值 无论如何,更简单的方法-我在Where子句中有一个Item_No,我想为它提供多个通配符。是否有一个类似于内联函数的方法,它应该替换@variant处的文本并结合它执行 此时,
@Variant
包含一个字符串
如果25
不等于'25','33'
,这将永远不会匹配。(中的正在寻找与括号中提供的至少一组值的精确匹配–相等。)
SQL不会神奇地将字符串解析为集合。你得告诉我。执行此操作的选项取决于您使用的特定DBMS。它们包括临时表和表值变量。SQL
Like
条件将在您的场景中起作用
DECLARE @Variant VARCHAR(50)
SET @Variant='''25'',''33'''
SELECT 'TRUE' WHERE @Variant like '%25%'
这里的结果是TRUE
。希望这会有所帮助。标记所使用的dbms。(该代码看起来根本不像ANSI SQL…)这与之类的或通配符无关。请修复标记。为什么要标记“通配符”和“像”?看起来标题与问题不匹配。标签也是如此。如果是这种情况,oracle不支持select WITH from子句。如果@Variant='25,33255256'
,该怎么办?谢谢Richard-您的解释“鉴于25不等于'25','33'这永远不会匹配”
SELECT 'TRUE' WHERE '25' IN (@Variant)
DECLARE @Variant VARCHAR(50)
SET @Variant='''25'',''33'''
SELECT 'TRUE' WHERE @Variant like '%25%'