mssql动态语句like 后面的点被覆盖了

凡人皆侑一死 2017-09-19 12:29:43
使用动态语句,用了个like 老是报错,like 后面的点似乎被覆盖了,’怎么处理呢?还有我输入的billno(举个例子:billno=CK110,billno=FR210)其实是可以根据前面的两位来判断是什么type的billno,然后根据他的类型,我希望在where 条件后面再加上一个procname like ‘%type%’怎么做到if判断然后选择使用特定的sql查询呢,是否可以像java那样使用if()true select 某某 else select 某某,求大神指点,感谢不尽!
use kft_log
go
if OBJECT_ID('getmylog') is not null
drop procedure getmylog
go
create procedure getmylog(@billno varchar(20),@month varchar(5))
as
begin
declare @name varchar(50)
set @name='dbo.KFT_DebugLog2_'+convert(varchar(4),GETDATE(),120)+@month
/*
set @name='dbo.KFT_DebugLog2_'+convert(varchar(4),GETDATE(),120)+cast(DATEPART(MM,GETDATE()) as varchar(10))
自动获取当前月份作为查询表名
*/
exec('select * from '+ @name+' where parameters like '%@billno%' order by createdate')
end
...全文
179 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2017-09-19
  • 打赏
  • 举报
回复
字符里有分号是需要用转义字符去转义的
凡人皆侑一死 2017-09-19
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
like里边的%得在引号里边;试试这样,如果不对把exec换成print,打印出来看看
use kft_log
go
if OBJECT_ID('getmylog') is not null
drop procedure getmylog
go
create procedure getmylog(@billno varchar(20),@month varchar(5))
as
begin
declare @name varchar(50)
set @name='dbo.KFT_DebugLog2_'+convert(varchar(4),GETDATE(),120)+@month
/*
set @name='dbo.KFT_DebugLog2_'+convert(varchar(4),GETDATE(),120)+cast(DATEPART(MM,GETDATE()) as varchar(10))
自动获取当前月份作为查询表名
*/
exec('select * from '+ @name+' where parameters like ''%'+@billno+'%'' order by createdate')
end
瞬间知道怎么做了,这都没想到,醉了
凡人皆侑一死 2017-09-19
  • 打赏
  • 举报
回复
引用 1 楼 z10843087 的回复:
先说是什么数据库。。。
说了啊,sql server
二月十六 版主 2017-09-19
  • 打赏
  • 举报
回复
like里边的%得在引号里边;试试这样,如果不对把exec换成print,打印出来看看
use kft_log
go
if OBJECT_ID('getmylog') is not null
drop procedure getmylog
go
create procedure getmylog(@billno varchar(20),@month varchar(5))
as
begin
declare @name varchar(50)
set @name='dbo.KFT_DebugLog2_'+convert(varchar(4),GETDATE(),120)+@month
/*
set @name='dbo.KFT_DebugLog2_'+convert(varchar(4),GETDATE(),120)+cast(DATEPART(MM,GETDATE()) as varchar(10))
自动获取当前月份作为查询表名
*/
exec('select * from '+ @name+' where parameters like ''%'+@billno+'%'' order by createdate')
end
OwenZeng_DBA 2017-09-19
  • 打赏
  • 举报
回复
先说是什么数据库。。。

34,589

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧