首页 > 解决方案 > 使用 SQL Server SELECT INTO 创建不可为空的列

问题描述

RTRIM 和 LTRIM 使列可以为空。我怎样才能使它们不可为空?

CREATE TABLE SO_IN
(
    RAW NVARCHAR(10) NOT NULL
) ;
GO

SELECT
    RAW,
    RTRIM(RAW) AS RTRIM,
    LTRIM(RAW) AS LTRIM
INTO SO_OUT
FROM
    SO_IN;

SELECT COLUMN_NAME, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'SO_OUT'

输出将是:

COLUMN_NAME|IS_NULLABLE
-----------|-----------
RAW        |NO
RTRIM      |YES
LTRIM      |YES

我希望他们都是 IS_NULLABLE NO

标签: sql-server

解决方案


它比我想的更简单:

CREATE TABLE SO_IN
(
    RAW NVARCHAR(10) NOT NULL
) ;
GO

SELECT
    RAW,
    ISNULL(RTRIM(RAW),'') AS RTRIM,
    LTRIM(RAW) AS LTRIM
INTO SO_OUT
FROM
    SO_IN;

SELECT COLUMN_NAME, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'SO_OUT'

推荐阅读