在这样的SQL查询中:
SELECT *
FROM MyTable
WHERE x = 5;
是否可以修改WHERE条件,以便SELECT查找x的每个值?像(错误的语法):
SELECT *
FROM MyTable
WHERE x = ANY_VALUE;
这个问题背后的原因是我必须通过我正在编写的一些C ++代码来解析和修改一些SQL查询。我知道在这种情况下我可以删除或评论整个WHERE条件,但这是一个简化。
谢谢。
答案 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'
希望这会有所帮助