Tsql SQL查询:选择[MyVariable]为

Tsql SQL查询:选择[MyVariable]为,tsql,Tsql,有人能帮我弄清楚这个SQL查询的语法吗?这是我到目前为止所拥有的 SELECT ... WHERE (@MyVariable IS NULL OR [MyVariable] <= (CAST(@MyVariable as NUMERIC))) 我真正需要的是能够选择[MyVariable]为的所有行,我认为您需要进行一些扭曲才能使其工作。。但我认为将ISNUMERIC与case语句结合使用可以达到以下目的: SELECT ... WHERE @MyVariable IS NULL OR

有人能帮我弄清楚这个SQL查询的语法吗?这是我到目前为止所拥有的

SELECT ... WHERE (@MyVariable IS NULL OR [MyVariable] <= (CAST(@MyVariable as NUMERIC)))

我真正需要的是能够选择[MyVariable]为的所有行,我认为您需要进行一些扭曲才能使其工作。。但我认为将ISNUMERIC与case语句结合使用可以达到以下目的:

SELECT ... WHERE 
@MyVariable IS NULL OR 
ISNUMERIC(@MyVariable) = 0 OR 
[MyVariable] < CASE 
                 WHEN IsNumeric(@MyVariable) = 1 
                     THEN CAST(@MyVariable as NUMERIC) 
                 ELSE 0 -- if you have negatives in your db go to max negative
             END

我不确定我是否明白你的问题:表中的[MyVariable]列是什么类型的?它是一个nvarchar。该列中的数据将始终为1,2,3,4,TEXT1,TEXT2。在select查询中,如果该列中的值为,则应该选择该行。您可能也应该在某个时候修复表结构。当你必须将一个字符串转换成一个数值,然后与空值进行比较,然后与一个变量进行比较,除非同一个字符串字段包含另一个值,否则这是一个坏兆头…@JNK抱歉什么?这有点难以理解。列类型中允许的值不是我的选择。它是从客户的电子表格导入的数据格式,也是导出到屏幕的数据格式。有更好的方法吗?@Novacara-如果您有一个字段要用作数字,请用数字填充它并使用数据类型。字符串也一样。使用文本和数字的通用字段通常是个坏主意。我会尝试一下,让你知道@novacara:你没有说你使用的是什么DBMS,但请注意IsNumeric适用于SQL Server,但不适用于MySQLOh是的,对不起……我使用的是SQLServer@novacara也要记住,数字可以给出你认为假阳性的东西。您可以用谷歌搜索,但有关示例,请参见: