我在存储过程中有以下代码行,我很难理解:
REPLICATE(''*'', charindex(convert(varchar(1), o.RestrictedB), ''1'')) + op.Prefix
WHERE o.RestrictedB = 1 || 0
AND op.Prefix = 'Test'
我得到了复制品,我认为它会op.Prefix
x
***
convert
charindex
{{1}} {} {}} {}} }和{{1}}。
答案 0 :(得分:2)
这似乎是一个非常艰苦的说法:
(case when o.Restricted = 1 then '*' else '' end) + op.Prefix
这个想法似乎是通过查找字符串“1”中的位置来检查值“0”或“1”。这将返回0或1,这是replicate()
的复制因子。
如果我不得不猜测,这段代码是从charindex()
的字符串长度超过“1”的地方复制的。单个字符的简化令人困惑(对charindex()
的较长搜索字符串来说会有足够的混淆,但它会更有意义。)