成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解惑SQL Server中LIKE使用變量類型不同輸出結果不一致

運維 數據庫運維
一同事在寫腳本時,遇到一個關于LIKE里面使用不同的變量類型導致查詢結果不一致的問題,因為這個問題被不同的人問過好幾次,索性總結一下,免得每次都要解釋一遍,直接丟一篇博客豈不是更方便!其實看似有點讓人不解的現象背后實質跟數據類型的實現有關。

[[380144]]

本文轉載自微信公眾號「DBA閑思雜想錄」,作者瀟湘隱者。轉載本文請聯系DBA閑思雜想錄公眾號。

一同事在寫腳本時,遇到一個關于LIKE里面使用不同的變量類型導致查詢結果不一致的問題,因為這個問題被不同的人問過好幾次,索性總結一下,免得每次都要解釋一遍,直接丟一篇博客豈不是更方便!其實看似有點讓人不解的現象背后實質跟數據類型的實現有關。

下面我們構造這樣一個類似的簡單案例。如下所示:

  1. CREATE TABLE TEST 
  2.   ID        INT IDENTITY(1,1), 
  3.   NAME      VARCHAR(32) 
  4.   
  5. INSERT INTO dbo.test 
  6. SELECT 'abc32'
  7.   
  8. INSERT INTO dbo.test 
  9. SELECT 'abd32'
  10.   
  11. INSERT INTO dbo.test 
  12. SELECT 'abe32' ; 
  13.   
  14.   
  15.   
  16.   
  17. DECLARE @name  VARCHAR(32); 
  18. SET @name='ab%'
  19. SELECT * FROM TEST WHERE NAME LIKE @name
  20.   
  21.   
  22. DECLARE @name1 CHAR(32); 
  23. SET @name1='ab%'
  24. SELECT * FROM dbo.TEST WHERE NAME LIKE @name1; 

如上截圖所示,當變量使用VARCHAR類型與CHAR類型時,兩者的輸出結果完全不一樣。如果對SQL SERVER數據類型了解不透徹的話,估計真的對這個問題感到相當的困惑。但是對SQL Server數據類型了解比較深入的人來說,這真的是一個簡單到不能再簡單的問題。

如下所示,我們在SQL語句中加入兩句SQL,用DATALENGTH函數返回任何表達式的字節數,你會發現VARCHAR類型的變量返回的字節數為3,但是CHAR類型的變量的字節數為32,其實原因就在于CHAR類型是定長的,也就是當你輸入的字符小于你指定的數目時,例如char(32),你輸入的字符長度小于32時,它會在后面補空值。當你輸入的字符長度大于指定的值時,它會截取超出的字符. 所以下面兩種LIKE的邏輯意義不一樣。LIKE 'ab%' 與 LIKE 'abc% '的邏輯完全不同。

其實你想從側面印證一下也很簡單,如下腳本對比所示,仔細理解一下,也許你就想明白了!

  1. DECLARE @name  CHAR(32); 
  2.  
  3. SET @name='ab%'
  4.  
  5. SELECT * FROM TEST WHERE NAME LIKE @name
  6.  
  7.   
  8. DECLARE @name1 CHAR(3); 
  9.  
  10. SET @name1='ab%'
  11.  
  12. SELECT * FROM dbo.TEST WHERE NAME LIKE @name1; 

 

責任編輯:武曉燕 來源: DBA閑思雜想錄
相關推薦

2017-08-25 17:59:41

浮點運算C語言

2024-05-11 07:37:43

數據Redis策略

2025-04-03 09:51:37

2012-01-11 16:22:35

HTML 5

2017-06-20 09:42:52

網絡安全法數據隱私法網絡安全

2021-01-19 05:39:17

SQLServer變量

2018-07-15 08:18:44

緩存數據庫數據

2021-05-27 18:06:30

MySQL編碼數據

2010-06-02 10:53:28

MySQL版本

2024-04-07 09:00:00

MySQL

2022-03-18 10:53:49

數據系統架構

2018-07-08 07:38:28

數據庫緩存數據

2020-07-20 14:06:38

數據庫主從同步服務

2024-11-18 08:00:00

數據倉庫通用語義層商業智能

2021-04-18 15:01:56

緩存系統數據

2022-03-16 15:54:52

MySQL數據format

2013-03-29 11:16:17

2021-01-19 10:39:03

Redis緩存數據

2013-12-13 14:46:55

OSPFMTU鄰接關系

2021-12-30 09:32:04

緩存數據庫數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩成人精品在线观看 | 成人av一区 | 欧美日韩视频在线播放 | 在线亚洲精品 | 午夜精品一区二区三区在线视频 | 国产乱码高清区二区三区在线 | 久久久国产一区二区三区 | 日韩国产中文字幕 | 久久久久久久久久久福利观看 | 九一在线观看 | 久久久久中文字幕 | 欧美日韩免费视频 | 国产乱码久久久久久 | 婷婷综合久久 | 欧美成人免费在线 | 男女网站免费观看 | 二区在线视频 | 九色一区 | 中文字幕在线观看国产 | 亚洲成人三区 | 国产综合一区二区 | 久久综合久久综合久久综合 | 国产精品久久久久一区二区三区 | 欧美日韩在线观看一区二区三区 | 色欧美综合 | 日本黄色大片免费 | 色毛片| 色网在线播放 | 成人福利影院 | 久久大陆 | 精品久久久久久久久久久 | 天天玩夜夜操 | 精品不卡| 黄色av网站在线观看 | 91亚洲国产成人精品一区二三 | 免费观看黄 | 特黄色一级毛片 | 亚洲一级黄色 | 久草资源| 91夜夜夜| 日韩中文一区二区 |