如果NULL
返回空字符串而不是NULL
,是否可以在SQL查询中使用笼统语句来允许所有列?
此刻,我正在为每列执行CASE
,例如:
SELECT
CASE
WHERE column_name IS NULL THEN ''
ELSE column_name
END
FROM TABLE
答案 0 :(得分:1)
您必须使用COALESCE或ISNULL在列级别进行操作。但是,如果您想将所有列放在一起,则建议采用一种解决方法。
将数据复制到默认值为EmptyString的表中。如果您不希望使用物理表,也可以考虑使用临时表。
CREATE TABLE TableCopy
(
Col1 INT NULL = '',
Col2 INT NULL =''
.
.
)
现在,您将数据加载到上表中。
INSERT INTO Tablecopy
SELECT * FROM OriginalTable
现在,如果您从Tablecopy中选择数据,则所有NULL都将替换为”,因为默认值将替换NULL输入
SELECT * FROM TableCopy
答案 1 :(得分:-1)
为避免检查列类型约束,应将列转换为字符串/ varchar。因此,新列仅显示varchar类型。
SELECT
CASE
WHEN column_name IS NULL THEN ''
ELSE CAST(column_name AS VARCHAR(255))
END AS new_column_name
FROM TABLE
编辑
否则,您可以使用concat_ws函数用分隔符连接或连接两个或多个列值。如果它接收到带有所有NULL值的参数,则它将返回一个空字符串。
https://docs.microsoft.com/en-us/sql/t-sql/functions/concat-ws-transact-sql?view=sql-server-ver15
SELECT CONCAT_WS(', ', column_name1, column_name2, ..) AS value FROM TABLE