同事写的SQL 太长看不懂
select ROW_NUMBER() over (order by id desc),收件公司名称,日期,快递名称,快递单号,case when [sta]=1 and len(isnull(收件人姓名,''))>1 then left(isnull(收件人姓名,''),1)+left('*****************',len(isnull(收件人姓名,''))-1) else isnull(收件人姓名,'') end 收件人姓名,case when [sta]=1 then dbo.地址处理(收件人联系方式) else 收件人联系方式 end 收件人联系方式,case when [sta]=1 then dbo.地址处理(省+市+县+地址) else 省+市+县+地址 end 收件人地址,物品名称 from kd_record where 寄件人工号='[工号]' and convert(date,日期)>='[日期]' and 日期 is not null and 快递名称+快递单号 is not null and isnull(快递单号,'')+isnull(快递名称,'')+isnull(收件公司名称,'')+isnull(收件人姓名,'')+isnull(收件人联系方式,'')+isnull(省+市+县+地址,'') like '%[key]%' order by id desc
请问向遇到这种很长的语句改怎么看??
拆分成多行啊
你可以运行一下看他出来得是什么东西你再去扣sql语句
格式化代码再看就比较容易了
这个sql很短了,这里说的“短”,是指它的结构,就只有一个select查询一张表而已。
分析sql语义,
对应到题目中的这个sql,就是
where 寄件人工号 = '[工号]'
and convert(date, 日期) >= '[日期]'
and 日期 is not null
and 快递名称 + 快递单号 is not null
and isnull(快递单号, '') + isnull(快递名称, '') + isnull(收件公司名称, '') +
isnull(收件人姓名, '') + isnull(收件人联系方式, '') +
isnull(省 + 市 + 县 + 地址, '') like '%[key]%'
ROW_NUMBER() over(order by id desc),
收件公司名称,
日期,
快递名称,
快递单号,
case
when [ sta ] = 1 and len(isnull(收件人姓名, '')) > 1 then
left(isnull(收件人姓名, ''), 1) +
left('*****************', len(isnull(收件人姓名, '')) - 1)
else
isnull(收件人姓名, '')
end 收件人姓名,
case
when [ sta ] = 1 then
dbo.地址处理(收件人联系方式)
else
收件人联系方式
end 收件人联系方式,
case
when [ sta ] = 1 then
dbo.地址处理(省 + 市 + 县 + 地址)
else
省 + 市 + 县 + 地址
end 收件人地址,
物品名称
然后where后面以及select后面,使用的函数及语法