【问题标题】:Simple SQL Variable Assignment Only Returns One Letter: Why?简单的 SQL 变量赋值只返回一个字母:为什么?
【发布时间】:2017-10-20 02:48:09
【问题描述】:

我试图用代码做的只是将点表示的模式和表名复制到一个变量中,并且由于某种原因,它给我的只是第一个字母:

DECLARE @LABEL NVARCHAR

SELECT
    @LABEL = LABEL
FROM(
     SELECT
        ROW_NUMBER() OVER(ORDER BY T.NAME) AS ROW_NUM,
        CONCAT(S.name, '.', T.name) AS LABEL
    FROM sys.tables AS T
        INNER JOIN sys.schemas AS S
            ON T.schema_id = S.schema_id
    WHERE [object_id] <> '917578307' --the diagram table
) AS D
WHERE
    ROW_NUM = 1

SELECT
    @LABEL

目前,我使用的表在 dbo 模式中,所以我得到的只是“d”。我做错了什么?

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

此声明:

DECLARE @LABEL NVARCHAR;

没有长度。没有长度——在这种情况下——SQL Server 定义的变量只有一个字符。

你需要一个长度:

DECLARE @LABEL NVARCHAR(255);

在 SQL Server 中使用字符声明时,总是包含长度。

【讨论】:

  • -__-...哇。谢谢...我不敢相信这是这么简单的事情。
猜你喜欢
  • 2011-12-23
  • 2012-09-08
  • 2018-12-06
  • 1970-01-01
  • 2021-12-09
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多