sql server中的一個坑-len與datalength區別
今天在處理問題時,統計一個欄位最大位元組數時,出現了問題:
select max(len(subject_name)) from dbtabletest;
但返回值為129。
但在oracle端始終出現報錯,說插入字元數過大,真是奇葩。
搞了半天,就把這個subject_name,複製出來,在文字編輯器中發現了有一行值後面有太多空格。直到現在才知道,需要使用datalength才能統計到結尾的空格,真是又被sql server坑了一把。
還好,最終找到問題了!
當採用非Unicode編碼時,即varchar型別的字串時,DataLength()和Len()的區別:
1、空格處理
Len() 字串表示式的字元數,不計尾部空格,但計頭部空格和中間的空格;
DataLength() 任何表示式的位元組數,包括空格 。
2、對於漢字的處理
區別在於Len只返回字元數,一個漢字代表一個字元。Datalength返回的是位元組數,一個漢字兩個位元組。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-2646973/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- order by在SQL Server與Oracle中的一個區別SQLServerOracle
- sql server agent與sql server有什麼區別 ?SQLServer
- SQL Server 中ntext, text, image長度計算 - datalength 函式SQLServer函式
- SQL Server中臨時表與表變數的區別SQLServer變數
- Oracle 和 SQL Server 個別小區別OracleSQLServer
- Sql server char,nchar,varchar與Nvarchar的區別SQLServer
- SQL Server中count(*)和Count(1)的區別SQLServer
- SQL Server中TempDB管理(版本儲存區的一個example)SQLServer
- SQL join中on與where區別SQL
- SQL中Having與Where的區別SQL
- PL/SQL中command window與SQL window的區別SQL
- SQL SERVER中的頁和區SQLServer
- skb->truesize,len,datalen,size,等的區別
- SQL Server中內連線和外連線的區別SQLServer
- 一個SQL Server中的FormatDatetime函式SQLServerORM函式
- MS SQL Server和MySQL區別ServerMySql
- SQL Server 三種複製的區別SQLServer
- MySQL中普通sql與預編譯sql 區別MySql編譯
- SQL JOIN 中 on 與 where 有何區別SQL
- sql server2008 R2 各個版本的區別與選擇SQLServer
- SQL Server SQL語句中的函式呼叫與Oracle SQL語句函式呼叫一個有趣的差別SQLServer函式Oracle
- SQL Server新老版本CE區別SQLServer
- SQL中on條件與where條件的區別[轉]SQL
- SQL中where和on的區別SQL
- [精選] SQL中的IN與NOT IN、EXISTS與NOT EXISTS的區別及效能分析SQL
- SQL Server中的鎖型別及用法SQLServer型別
- SQL Server中的事務與鎖SQLServer
- 講解SQL Server的版本區別及選擇SQLServer
- SQL Server 聚集索引和非聚集索引的區別SQLServer索引
- 詳解SQL Server的版本區別及選擇SQLServer
- SQL LEN()函式用法SQL函式
- 【SQL】UNION ALL 與UNION 的區別SQL
- Javascript中“==”與“===”的區別JavaScript
- js中“==”與"==="的區別JS
- SQL中IN和EXISTS用法的區別SQL
- 如何識別SQL Server中的IO瓶頸SQLServer
- 如何識別SQL Server中的CPU瓶頸SQLServer
- SQL Server 中的25種資料型別SQLServer資料型別