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

vmjh9lq9  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(421)

在sql查询中,是否有一个允许所有列 NULL 返回空字符串而不是 NULL ?
目前我正在做一项调查 CASE 每列,例如:

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

vyu0f0g11#

您必须使用coalesce或isnull在列级别执行此操作。但是,如果您想将所有列放在一起,我建议采取一种变通方法。
将数据复制到默认值为emptystring的表中。如果你不想要物理表,你也可以考虑临时表。

CREATE TABLE TableCopy
(
Col1 INT NULL = '',
Col2 INT NULL =''
.
.
)

现在,将数据加载到上表中。

INSERT INTO Tablecopy
SELECT * FROM OriginalTable

现在,如果从tablecopy选择数据,则所有null都将替换为“”,因为默认值将替换null输入

SELECT * FROM TableCopy
31moq8wy

31moq8wy2#

为了避免列类型约束检查,应该将列转换为string/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\u ws函数用分隔符连接两个或多个列值。如果它接收到所有空值的参数,那么它将返回一个空字符串。
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

相关问题