存储过程澄清 - 复制,charIndex和转换

时间:2015-02-05 21:03:53

标签: sql sql-server tsql

我在存储过程中有以下代码行,我很难理解:

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}}。

1 个答案:

答案 0 :(得分:2)

这似乎是一个非常艰苦的说法:

(case when o.Restricted = 1 then '*' else '' end) + op.Prefix

这个想法似乎是通过查找字符串“1”中的位置来检查值“0”或“1”。这将返回0或1,这是replicate()的复制因子。

如果我不得不猜测,这段代码是从charindex()的字符串长度超过“1”的地方复制的。单个字符的简化令人困惑(对charindex()的较长搜索字符串来说会有足够的混淆,但它会更有意义。)