使用变量时,SQL LIKE的输出不同

时间:2019-02-25 15:25:36

标签: sql sql-server select

您好,今天我练习了SQL语句。当我尝试使用%like%从数据库中进行选择时,当我使用变量和不使用变量时,它会输出不同的值。

请参见 考虑一个称为POSTS的简单表,每个表都有CONTENT和HEADING

Post

现在,当我尝试从此表中进行选择

SELECT * 
FROM Posts
WHERE Headline like '%'+'fun'+'%' OR Content like '%'+'fun'+'%'

我得到以下输出:

output

但是,如果我尝试在搜索中选择使用变量为:

DECLARE @test NVARCHAR = 'fun'
SELECT * FROM Posts
WHERE Headline like '%'+@test+'%' OR Content like '%'+@test+'%'

我得到以下输出:

output2

所以我想知道当理论上它必须具有相同的输出时,该变量如何改变结果?

1 个答案:

答案 0 :(得分:7)

这是您的声明:

def text_ROI_word(thresh,output):
kernel = np.ones((2,1), np.uint8)
kernel2 = np.ones((1,4), np.uint8)
temp_img = cv2.morphologyEx(thresh,cv2.MORPH_CLOSE,kernel,iterations=2)
word_img = cv2.dilate(temp_img,kernel2,iterations=1)
(image,contours,hierarchy ) = cv2.findContours(word_img.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
    x,y,w,h = cv2.boundingRect(cnt)
    cv2.rectangle(output,(x-1,y-5),(x+w,y+h),(255,0,0),1)
return output
image = cv2.imread("local path")
output_image_word=image.copy()
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
ret,th = 
cv2.threshold(gray_image,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
output_image_word = text_ROI_word_2(th,output_image_word)
cv2.imwrite("local path", output_image_word)

然后,DECLARE @test NVARCHAR = 'fun' 的值为@test。为什么?它只有一个字符。

在SQL Server中使用字符串声明时,

总是加上一个长度:

'f'