我有一个 SQL 脚本,它根据传递给它的颜色获取结果,但除非我将定义为 varchar 的变量的大小设置为 (50),否则不会返回任何结果。
如果我使用:like ''+@Colour+'%'
那么它可以工作,但我真的不想使用它,以防它带回我不需要或不想要的结果。
FieldValue 列的类型为 Varchar(Max)(无法更改,因为该字段可以存储不同的内容)。它是 aspdotnetstorefront 包的一部分,因此我无法真正更改表或字段类型。
这不起作用:
declare @Col VarChar
set @Col = 'blu'
select * from dbo.MetaData as MD where MD.FieldValue = @Colour
但这确实有效:
declare @Col VarChar (50)
set @Col = 'blu'
select * from dbo.MetaData as MD where MD.FieldValue = @Colour
该代码在以下上下文中使用,但应该以任何一种方式工作
<query name="Products" rowElementName="Variant">
<sql>
<![CDATA[
select * from dbo.MetaData as MD where MD.Colour = @Colour
]]>
</sql>
<queryparam paramname="@ProductID" paramtype="runtime" requestparamname="pID" sqlDataType="int" defvalue="0" validationpattern="^\d{1,10}$" />
<queryparam paramname="@Colour" paramtype="runtime" requestparamname="pCol" sqlDataType="varchar" defvalue="" validationpattern=""/>
</query>
有任何想法吗?
我也无法设置大小<queryparam paramname="@Colour" paramtype="runtime" requestparamname="pCol" sqlDataType="varchar" defvalue="" validationpattern=""/>