有没有现成的函数 完成这个

振乾 2010-08-16 04:18:03

--查询出 @SQL 中 有多少 个 ';' 有没有现成的函数
DECLARE @SQL VARCHAR(max)
SET @SQL='RxAGC(dBm);TxAGC(dBm);TxGainAdj(dB)'
--最后计算出 一共有2个 ';'
...全文
91 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sqlcenter 的回复:]
SQL code
DECLARE @SQL VARCHAR(max)
SET @SQL='RxAGC(dBm);TxAGC(dBm);TxGainAdj(dB)'

select len(@SQL) - len(replace(@SQL,';','')) -- 2
[/Quote]
太佩服你了,这个做法好
SQLCenter 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gguozhenqian 的回复:]
select len(@SQL) - len(replace(@SQL,';','')) 的长度 仍然是 3
[/Quote]

对就行了,我现在2008版,我记得2005/2000中len()都是忽略尾随空格的,可能记错了。
振乾 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sqlcenter 的回复:]
len方法其实不正道,参见下面:


SQL code
DECLARE @SQL VARCHAR(max)
SET @SQL='RxAGC(dBm);TxAGC(dBm);TxGainAdj(dB) ;' --> 怕这种情况

select len(@SQL) - len(replace(@SQL,';','')) -- 5 error

select datalength(@……
[/Quote]

select len(@SQL) - len(replace(@SQL,';','')) 的长度 仍然是 3
SQLCenter 2010-08-16
  • 打赏
  • 举报
回复
len方法其实不正道,参见下面:

DECLARE @SQL VARCHAR(max)
SET @SQL='RxAGC(dBm);TxAGC(dBm);TxGainAdj(dB) ;' --> 怕这种情况

select len(@SQL) - len(replace(@SQL,';','')) -- 5 error

select datalength(@SQL) - datalength(replace(@SQL,';','')) -- 3 ok
billpu 2010-08-16
  • 打赏
  • 举报
回复
现成的似乎没有 1楼的方面蛮巧妙的 呵呵加个参数
  DECLARE @SQL VARCHAR(max)
SET @SQL='RxAGC(dBm);TxAGC(dBm);TxGainAdj(dB)'
set @sstr=';'
select (len(@SQL) - len(replace(@SQL,';','')))/len(@str) -- 2
振乾 2010-08-16
  • 打赏
  • 举报
回复

select (len(@SQL)-len(replace(@SQL, ';', '')))/len( ';')
hao1hao2hao3 2010-08-16
  • 打赏
  • 举报
回复

DECLARE @s VARCHAR(200)
SET @s = '1;2;3;4'
SELECT LEN(@s)-LEN(REPLACE(@s,';',''))


结果

3

SQLCenter 2010-08-16
  • 打赏
  • 举报
回复
  DECLARE @SQL VARCHAR(max)
SET @SQL='RxAGC(dBm);TxAGC(dBm);TxGainAdj(dB)'

select len(@SQL) - len(replace(@SQL,';','')) -- 2

34,590

社区成员

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

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