CREATE PROCEDURE dbo.GetVenName(@cName varchar(60))
as
select cVenName,cVenCode from Vendor
where cVenName lide '%'+@cName
GOor :CREATE PROCEDURE dbo.GetVenName(@cName char(60))
as
select cVenName,cVenCode from Vendor
where cVenName lide '%'+rtrim(@cName)
GO
as
select cVenName,cVenCode from Vendor
where cVenName lide '%'+@cName
GOor :CREATE PROCEDURE dbo.GetVenName(@cName char(60))
as
select cVenName,cVenCode from Vendor
where cVenName lide '%'+rtrim(@cName)
GO
as
exec('select cVenName,cVenCode from Vendor
where cVenName like ''%'+@cName+'''')
GO
(所影响的行数为 0 行)
顺便更正一下,上面的lide 应该为like
帮助上说like 有char 和varchar 的区别,不知我的过程错在什么地方
CREATE PROCEDURE dbo.GetVenName(@cName char(60))
as
declare @sql='select cVenName,cVenCode from Vendor
where cVenName like ''%'+@cName+''''
exec(@sql)
GO具体你可以看一下帮助中exec的用法
CREATE PROCEDURE dbo.GetVenName(@cName char(60))
as
declare @sql varchar(8000)
set @sql='select cVenName,cVenCode from Vendor
where cVenName like ''%'+@cName+''''
exec(@sql)
GO具体你可以看一下帮助中exec的用法
下边是Vendor表
001 沈阳铁合金厂 沈铁 0101 NULL NULL NULL NULL 1102253341504 工行京昌支行 86730123 2001-10-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 001 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL
上边是一条记录
002 海淀百货商场 海淀百货 0201 NULL NULL NULL NULL 33625785532100 工行海淀支行 77999000 2001-10-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 002 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL
003 洛阳轴承厂 洛轴 0102 NULL NULL NULL NULL 700812943100782 工行洛阳支行 360001234 2001-10-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 003 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL
004 沈阳胜利工厂 胜利厂 0102 NULL NULL NULL NULL 010233511415054 工行四会支行 030112345 2001-10-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 004 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL
012 abcdef abc 0101 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0.0 NULL 0.0 0 NULL NULL NULL NULL NULL NULL 0.0 NULL 0.0 NULL 0.0 NULL 0 0 NULL NULL NULL
我直接用select * from Vendor where cVendorName like '%胜利'
什么也查不到
试试:
CREATE PROCEDURE dbo.GetVenName(@cName varchar(60))
as
declare @sql varchar(8000)
set @sql='select cVenName,cVenCode from Vendor
where cVenName like ''%'+@cName+''''
exec(@sql)
GO
(
cVenCode varchar(3),
cVenName varchar(80)
)insert into Vendor values('001','沈阳铁合金厂')
insert into Vendor values('002','海淀百货商场 ')
insert into Vendor values('003','洛阳轴承厂')
insert into Vendor values('004','沈阳胜利工厂')drop proc GetVenName
CREATE PROCEDURE dbo.GetVenName(@cName varchar(60))
as
declare @sql varchar(8000)
set @sql='select cVenName,cVenCode from Vendor
where cVenName like ''%'+@cName+'%'''
exec(@sql)
GOexec GetVenName '胜利'
可以查到,cVenCode 是varchar(12),怪事
是不是exec getvenname '胜利'这句话有问题?
select cVenName,cVenCode from Vendor
where cVenName lide '%'+@cName+'%'
必须前后都加上“%”才行的,否则只会检索出以所传参数结尾的记录
CREATE PROCEDURE dbo.GetVenName(@cName char(60))
as
select cVenName,cVenCode from Vendor
where cVenName like '%'+rtrime(@cName)+'%'
GO
谢谢哈哈拉,
散分
昨晚我也试过
CREATE PROCEDURE dbo.GetVenName(@cName char(60))
as
select cVenName,cVenCode from Vendor
where cVenName like '%'+@cName+'%'
GO
因为没有加rtrim(),所以没有成功,
我穿的参数没有又空格阿,怎么要用rtrim呢?