如果任何列为空,则返回一个空字符串

时间:2020-05-21 10:05:59

标签: sql sql-server

如果NULL返回空字符串而不是NULL,是否可以在SQL查询中使用笼统语句来允许所有列?

此刻,我正在为每列执行CASE,例如:

SELECT 
    CASE 
        WHERE column_name IS NULL THEN ''
        ELSE column_name
    END
FROM TABLE

2 个答案:

答案 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