sql-server - 如何从 SQL Server 数据库检索值?

标签 sql-server t-sql

以下查询工作正常:

select ProductNumber,Name,Color,ListPrice 
from Production.Product 
where ProductNumber = 'AR-5381'

无论何时, 我正在编写如下代码来从 SQL 服务器检索值:

declare @ProductNum nvarchar
set @ProductNum = 'AR-5381'
select ProductNumber,Name,Color,ListPrice 
from Production.Product 
where ProductNumber = @ProductNum 

我无法获取这些值。但表中存在 ProductNumber('AR-5381')。 我做错了什么?

最佳答案

声明变量时默认长度为 1。

nvarchar 不指定长度表示 nvarchar(1)

因此以下 nvarchar 变量仅存储字符串中的第一个字符,因为它的长度为 1。

declare @ProductNum nvarchar
set @ProductNum = 'AR-5381'
SELECT @ProductNum 

输出
一个

declare @ProductNum nvarchar(2)
set @ProductNum = 'AR-5381'
SELECT @ProductNum 

输出
增强现实

您应该指定一些长度,例如。

declare @ProductNum nvarchar(255)
set @ProductNum = 'AR-5381'
select ProductNumber,Name,Color,ListPrice 
from Production.Product 
where ProductNumber =@ProductNum 

关于sql-server - 如何从 SQL Server 数据库检索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22124958/

相关文章:

sql-server - MS-SQL/ColdFusion : Mysterious database error: Object has been closed

sql - 不使用任何聚合函数计算行数

sql-server - SQL Server 触发器、递归更新

sql - 记录不同种类的 INSERT 语句

sql - 显示乱序时差

sql-server - 查询 SQL Server 系统表以获取字符数据类型大小

sql - 同时使用 RANK 和 COUNT(DISTINCT) 聚合

java - 如何消除java中的Windows特殊字符`^@`

c# - Entity Framework Core 通过 SSH 隧道连接到 MSSQL 数据库

c# - T-SQL 中的 AES 加密和 C# 解密