set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
ALTER PROCEDURE [dbo].[Pro_GetCateSonID]
@Channel_id int, --频道ID
@Parent_id int --分类ID
AS
declare @strSQL nvarchar(1000)
BEGIN
SET NOCOUNT ON;
set @strSQL='SELECT id FROM dt_category WHERE channel_id='+str(@Channel_id)+' and class_list like ''%,'+str(@Parent_id)+',%'' ORDER BY id ASC'
END
print(@strSQL)
exec (@strSQL)
调用方法:
DECLARE @return_value int
EXEC @return_value = [dbo].[Pro_GetCateSonID]
@Channel_id = 6,
@Parent_id =48
SELECT 'Return Value' = @return_value
GO
打印出的SQL语句多了很多空格。
SELECT id FROM dt_category WHERE channel_id= 6 and class_list like '%, 48,%' ORDER BY id ASC
id
-----------
Return Value
------------
0
(1 行受影响)
这样模糊查询根本就查不出来结果。求助
@Channel_id int, --频道ID
@Parent_id int --分类ID
参数用nvarchar代替,解决
mssql 中不是有 TRIM 函数么? 另外,客户输入那边为什么不trim啊?
我直接数据库调试的,参数设置的是int类型,不应该包含了空格啊!
mssql没trim函数。奇怪!
@PKSEO_dudu: 你认为int类型是几个字节,你将int类型作为LIKE的参数,出现前导空格不是很正常的吗?
另外,你试试 SELECT LTRIM(' ABC')
@PKSEO_dudu: 另外,还有一个RTRIM(),不过,你这里用不上。
不要str这样的东东,可以选择用cast(变量 as varchar(500)),或者Convert(varchar(50),字段)这样的函数写法。