position: relative;
width: 100%;
height: auto;
margin-top: 0px;
margin-bottom: 0px
用'&'传递@vchrText时在它没有返回任何东西,如果它不在那么它返回有效的结果,为什么。??上面的查询实际上做了什么..?
答案 0 :(得分:2)
您的脚本存在的问题在于PATINDEX
中使用的STUFF
模式:
这个表达式:
PATINDEX('%[^a-zA-Z0-9&]%', @vchrText)
包含&
。因此,PATINDEX
会返回0
,因为@vchrText
包含&
个字符。传递给它的起始索引为STUFF
时,NULL
返回0
。因此,您最终会在NULL
时收到@vchrText = 'AB&CDC'
作为输出。
PATINDEX
谓词中使用的WHILE
模式不包含&
。因此,它可以正确检测@vchrText
中包含的任何非字母数字字符。如果@vchrText
仅包含 字母数字字符,则会返回0
。
底线:要修复您的脚本,只需修复PATINDEX
中使用的STUFF
模式,使用'%[^a-zA-Z0-9]%'
代替'%[^a-zA-Z0-9&]%'
。