将数据库排序规则读入 SQL 服务器中的变量时出现问题

Problem in reading the database collation into a variable in SQL Server

我遇到过无法将变量的值设置为查询结果的奇怪事情。查询正在读取数据库的排序规则并自行正常工作:

SELECT collation_name 
FROM sys.databases
WHERE [name] = 'my_DB';

结果是这样的: SQL_Latin1_General_CP1_CI_AS

但是当我想把结果放在一个变量中时,我没有得到结果(也没有错误)

declare @DB_collation varchar(100);
set @DB_collation = (SELECT 
    collation_name 
    FROM sys.databases
    WHERE name = 'my_DB')  
print @DB_collation;

我可以将其他 SELECT 查询的结果设置为 varchar 变量。

方法是这样的:

declare @DB_collation varchar(100);
SELECT  @DB_collation = 
    collation_name 
    FROM sys.databases
    WHERE name = 'tempdb' 
    
print @DB_collation;

将您的变量放在 select 关键字之后。

这是一个演示:

DEMO

如果这不起作用,那么您可以 select 变量的值:

declare @DB_collation varchar(100);
SELECT  @DB_collation = 
    collation_name 
    FROM sys.databases
    WHERE name = 'tempdb' 
    
select @DB_collation;

P.S:请在“消息”选项卡而不是“结果”选项卡中查看 PRINT 语句的结果