我有一个表,其值如0、1、2、3,-1,-2、9、8等。我想在数字小于0的列中放入“空白”,即它应该显示所有记录并位置小于0的任何地方都应显示“”。
我尝试使用STR,但这使我的查询速度太慢。查询如下所示:
select CASE WHEN position < 0 THEN '' ELSE position END Position, column2 from ( Select STR (column1) as position, column2 from table ) as t1
有人可以建议一种更好的方式来显示“ column1”中的“”吗?还有其他办法吗?我可以用什么代替str?
更新:column1是int类型,我不想将null而是空字符串。我知道我无法在int列中显示空字符串,因此必须使用强制转换。只是想确保它不会减慢我的查询速度,寻找可以在更短的时间内返回结果的最佳选项。
您可以将CASE表达式放入查询中,并替换STR为CAST,如下所示:
CASE
STR
CAST
SELECT CASE WHEN position < 0 THEN '' ELSE CAST(column1 as VARCHAR(10)) END as position , column2 FROM myTable