在 SQL 的同一行上打印整数变量和字符串

Posted

技术标签:

【中文标题】在 SQL 的同一行上打印整数变量和字符串【英文标题】:Printing integer variable and string on same line in SQL 【发布时间】:2014-05-09 13:24:48 【问题描述】:

好的,所以我在 Technet 上搜索了此问题的答案,但无济于事。

我只想打印一个与两个字符串变量连接的整数变量。

这是我的代码,无法运行:

print 'There are ' + @Number + ' alias combinations did not match a record'

这似乎是一个基本的功能,我无法想象在 T-SQL 中是不可能的。但如果不可能,请直说。我似乎找不到一个直接的答案。

【问题讨论】:

print 'There are ' + CAST(@Number AS NVARCHAR(100)) + ' alias combinations did not match a record' 【参考方案1】:
declare @x INT = 1 /* Declares an integer variable named "x" with the value of 1 */
    
PRINT 'There are ' + CAST(@x AS VARCHAR) + ' alias combinations did not match a record' /* Prints a string concatenated with x casted as a varchar */

【讨论】:

我喜欢 Cast 方法。简短而甜蜜,并将原始变量保留为我需要的 int。 哈,我会立即接受它,但它不会让我再等 6 分钟。【参考方案2】:

数字有higher precedence 而不是字符串,所以+ 运算符当然希望在添加之前将您的字符串转换为数字。

你可以这样做:

print 'There are ' + CONVERT(varchar(10),@Number) +
      ' alias combinations did not match a record'

或使用RAISERROR 的(相当有限的)格式化工具:

RAISERROR('There are %i alias combinations did not match a record',10,1,@Number)
WITH NOWAIT

【讨论】:

感谢您提供背景信息。我没有意识到 T-SQL 在执行简单的打印语句时有这么多的优先考虑。 @AdamJ - 这与print 语句本身无关。 T-SQL 是一种非常简单、非常老式的语言。在 T-SQL 中,运算符的所有输入都必须属于同一类型。 谢谢!我想我有时会忘记 SQL 是在 70 年代创建的。 SQL Server 的外观相当时尚(在我看来),我认为这使它看起来比实际更现代。【参考方案3】:

您不能组合字符串和数字字符串。您需要使用 CONVERT 或 CAST 将数字转换为字符串。

例如:

print 'There are ' + cast(@Number as varchar) + ' alias combinations did not match a record'

print 'There are ' + convert(varchar,@Number) + ' alias combinations did not match a record'

【讨论】:

【参考方案4】:

仔细检查您是否为要打印的 int 和 decimal 值设置了 初始值

此示例正在打印一个空行

declare @Number INT
print 'The number is : ' + CONVERT(VARCHAR, @Number)

这个样本正在打印 -> 数字是:1

declare @Number INT = 1
print 'The number is : ' + CONVERT(VARCHAR, @Number)

【讨论】:

【参考方案5】:

如果您不想手动转换类型,可以使用CONCAT-function。

PRINT CONCAT('There are ', @Number, ' alias combinations did not match a record')

【讨论】:

【参考方案6】:

你可以试试这个,

declare @Number INT = 5                            
print 'There are ' + CONVERT(VARCHAR, @Number) + ' alias combinations did not match a record'

【讨论】:

以上是关于在 SQL 的同一行上打印整数变量和字符串的主要内容,如果未能解决你的问题,请参考以下文章

在R中的同一行上打印字符串和变量内容

在 Python 中的同一行上打印多个

节练习题

怎样用一行python打印列表所有元素

如何在 SQL 的同一行加入结果?

在Ruby中的同一行中打印不同大小数组的数组元素