问题描述
我的表格如下所示:
姓名 | 深度 | IsFile |
---|---|---|
GMES9604U 1.10 770 CFM-2135.csv | 1 | 1 |
当我声明我的变量时,只存储了名称的一部分:
declare @filename222 varchar(max)
SET @filename222 = CAST((
SELECT Top 1 Name
FROM #MyFiles
) AS Varchar)
print(@filename222)
Result Messages:
GMES9604U 1.10 770 CFM-2135.cs
我想知道如何将整个 Name 作为我的变量。谢谢!
解决方法
你为什么要对 varchar
进行大小写?在 SQL Server 中,永远不要使用没有长度的字符串声明。但是显式转换是不必要的。
只需使用:
SELECT Top 1 @filename222 = Name
FROM #MyFiles ;
varchar
的默认长度——在没有长度的情况下使用时——取决于上下文。您可以使用显式 cast()
,但您会使用 varchar(max)
。
您表中的名称列定义为什么?它也是<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="inserts">
</div>
还是定义为VARCHAR(MAX)
如果您已经在表中拥有该值,则应将该变量声明为相同的数据类型,这样您就永远不会遇到截断问题。
您的问题很可能源于这样一个事实,即未为 VARCHAR(<some number>)
声明添加值时的默认值为 1 或 30(请参阅 https://sqlblog.org/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length)