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

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

運(yùn)維 數(shù)據(jù)庫運(yùn)維
一同事在寫腳本時(shí),遇到一個(gè)關(guān)于LIKE里面使用不同的變量類型導(dǎo)致查詢結(jié)果不一致的問題,因?yàn)檫@個(gè)問題被不同的人問過好幾次,索性總結(jié)一下,免得每次都要解釋一遍,直接丟一篇博客豈不是更方便!其實(shí)看似有點(diǎn)讓人不解的現(xiàn)象背后實(shí)質(zhì)跟數(shù)據(jù)類型的實(shí)現(xiàn)有關(guān)。

[[380144]]

本文轉(zhuǎn)載自微信公眾號(hào)「DBA閑思雜想錄」,作者瀟湘隱者。轉(zhuǎn)載本文請(qǐng)聯(lián)系DBA閑思雜想錄公眾號(hào)。

一同事在寫腳本時(shí),遇到一個(gè)關(guān)于LIKE里面使用不同的變量類型導(dǎo)致查詢結(jié)果不一致的問題,因?yàn)檫@個(gè)問題被不同的人問過好幾次,索性總結(jié)一下,免得每次都要解釋一遍,直接丟一篇博客豈不是更方便!其實(shí)看似有點(diǎn)讓人不解的現(xiàn)象背后實(shí)質(zhì)跟數(shù)據(jù)類型的實(shí)現(xiàn)有關(guān)。

下面我們構(gòu)造這樣一個(gè)類似的簡(jiǎn)單案例。如下所示:

  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; 

如上截圖所示,當(dāng)變量使用VARCHAR類型與CHAR類型時(shí),兩者的輸出結(jié)果完全不一樣。如果對(duì)SQL SERVER數(shù)據(jù)類型了解不透徹的話,估計(jì)真的對(duì)這個(gè)問題感到相當(dāng)?shù)睦Щ蟆5菍?duì)SQL Server數(shù)據(jù)類型了解比較深入的人來說,這真的是一個(gè)簡(jiǎn)單到不能再簡(jiǎn)單的問題。

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

其實(shí)你想從側(cè)面印證一下也很簡(jiǎn)單,如下腳本對(duì)比所示,仔細(xì)理解一下,也許你就想明白了!

  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; 

 

責(zé)任編輯:武曉燕 來源: DBA閑思雜想錄
相關(guān)推薦

2017-08-25 17:59:41

浮點(diǎn)運(yùn)算C語言

2024-05-11 07:37:43

數(shù)據(jù)Redis策略

2025-04-03 09:51:37

2012-01-11 16:22:35

HTML 5

2017-06-20 09:42:52

網(wǎng)絡(luò)安全法數(shù)據(jù)隱私法網(wǎng)絡(luò)安全

2021-01-19 05:39:17

SQLServer變量

2018-07-15 08:18:44

緩存數(shù)據(jù)庫數(shù)據(jù)

2021-05-27 18:06:30

MySQL編碼數(shù)據(jù)

2024-04-07 09:00:00

MySQL

2010-06-02 10:53:28

MySQL版本

2022-03-18 10:53:49

數(shù)據(jù)系統(tǒng)架構(gòu)

2018-07-08 07:38:28

數(shù)據(jù)庫緩存數(shù)據(jù)

2020-07-20 14:06:38

數(shù)據(jù)庫主從同步服務(wù)

2021-04-18 15:01:56

緩存系統(tǒng)數(shù)據(jù)

2022-03-16 15:54:52

MySQL數(shù)據(jù)format

2024-11-18 08:00:00

數(shù)據(jù)倉庫通用語義層商業(yè)智能

2013-03-29 11:16:17

2021-01-19 10:39:03

Redis緩存數(shù)據(jù)

2013-12-13 14:46:55

OSPFMTU鄰接關(guān)系

2021-12-26 14:32:11

緩存數(shù)據(jù)庫數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美高清 | 狠狠插天天干 | 日韩av高清 | 国产一区二区在线免费观看 | 毛片免费看的 | 日韩高清国产一区在线 | 成人亚洲性情网站www在线观看 | www日本在线观看 | 国产精品久久久久久婷婷天堂 | 日韩精品成人网 | 黄网站在线播放 | 男人的天堂在线视频 | 亚州精品天堂中文字幕 | 午夜爽爽爽男女免费观看 | 精品一区二区电影 | 婷婷久久五月天 | 涩涩视频大全 | www亚洲精品 | 在线啊v| 国产a区| 黄色电影在线免费观看 | 一级毛片免费完整视频 | 成人国产在线视频 | 国产成人精品一区二 | 草草视频在线播放 | 老熟女毛片 | 99福利视频| 日韩综合在线视频 | 紧缚调教一区二区三区视频 | 久久国产欧美日韩精品 | 日韩精品免费在线观看 | 日韩精品激情 | 久久51 | 久久久久黑人 | 久久夜色精品国产 | 大久 | 亚洲图片视频一区 | 亚洲一av | 国产欧美精品一区 | 亚洲免费在线视频 | 颜色网站在线观看 |