在SQL中,是否有类似于:WHERE x = ANY_VALUE?

时间:2012-03-21 10:58:30

标签: mysql sql parsing

在这样的SQL查询中:

SELECT *
FROM MyTable
WHERE x = 5;

是否可以修改WHERE条件,以便SELECT查找x的每个值?像(错误的语法):

SELECT *
FROM MyTable
WHERE x = ANY_VALUE;

这个问题背后的原因是我必须通过我正在编写的一些C ++代码来解析和修改一些SQL查询。我知道在这种情况下我可以删除或评论整个WHERE条件,但这是一个简化。

谢谢。

5 个答案:

答案 0 :(得分:2)

在这种情况下,您通常会这样做:

SELECT *
FROM MyTable
WHERE x = SOME_VALUE OR 1 = 1;

SOME_VALUE是任意的,它可以是与列类型匹配的任何内容,因为WHERE子句将始终为真,因为第二部分。

答案 1 :(得分:2)

您可以尝试:

SELECT * 
FROM MyTable 
WHERE x = x OR x IS NULL; 

答案 2 :(得分:2)

虽然我认为这是错误的做法(只是努力去除Where),x = x的位置怎么样?如果X为null(你必须使用“x is null或x = x”)它将不起作用,但如果你知道x不会为null,则不要打扰。

答案 3 :(得分:2)

您可以省略WHERE子句。 :)

答案 4 :(得分:1)

您可以像这样进行查询

DECLARE @VALUE as (type of x)
--SET @VALUE = ''
SELECT * 
FROM MyTable 
WHERE (@VALUE IS NULL OR x = @VALUE);

并且您的解析只需要替换 :--SET @VALUE = ''行,其中包含您想要的值,减去评论,例如:SET @VALUE = 'abc'

希望这会有所帮助