2011年12月27日 星期二

[MySQL]字串長度與字串切割CHARACTER_LENGTH()、CHAR_LENGTH()、LENGTH()

字串長度測量函式分別是CHARACTER_LENGTH()、CHAR_LENGTH()、LENGTH()。
CHARACTER_LENGTH()、CHAR_LENGTH()是相同的,以UTF8來計算,中英文都可以計算。
LENGTH()也可以計算中英文,但對中文的計算會因編碼不同而計算不同,分別是UTF8一字三位,BIG5一字二位。


字串切割函式分別是SUBSTRING_INDEX(culomnName, exp, number)、SUBSTR(culomnName, startIndex, length)。
SUBSTRING_INDEX(culomnName, exp, number)︰
exp是你想開始切割的辨別字元。
number則是以正負數兩種區分,當輸入正數則顯示辨別字左方所有字元,當輸入負數則顯示右方所有字元,如果輸入0會無法辨別。

SUBSTR(culomnName, startIndex, length)︰
startIndex是欲切割起始的index,開頭第一位是1,如果輸入0會無法辨別。
length是自起始index想要切的長度,一字一位元包含空白字元也要算。

以下將由範例一一示範解說︰

使用SUBSTRING_INDEX(culomnName, exp, number)
SELECT  username, SUBSTRING_INDEX(username, '.', 1)
FROM     user


結果︰辨別字元是'.',輸入正數所以只出現左邊的所有字元
















使用 SUBSTRING_INDEX(culomnName, exp, number) 但輸入負數
SELECT  username, SUBSTRING_INDEX(username, '.', -1)
FROM     user


結果︰只出現右邊所有字元














使用CHARACTER_LENGTH(),並且限定只有字元長度8的才能出現
SELECT  username, CHARACTER_LENGTH(username)
FROM     user
WHERE   CHARACTER_LENGTH(username) = 8

結果︰只有八位元的才能出現,值得注意的是此函式會把中文字也只算一個字元。









使用CHAR_LENGTH(),順便練習一下字串切割,一樣限定字元長度8才能出現
SELECT  username, SUBSTRING_INDEX(username, ' ', -1) , CHAR_LENGTH(username)
FROM     user
WHERE   CHAR_LENGTH(username) = 8

結果︰本次辨別字元改成空字元,從空字元開始往右全部字元皆顯示,搭配字元計算。









使用LENGTH(),因為資料是中英文夾雜所以條件使用CHARACTER_LENGTH()
SELECT  username, LENGTH(username), CHARACTER_LENGTH(username)
FROM     user
WHERE  CHARACTER_LENGTH(username) = 8


結果︰條件使用CHARACTER_LENGTH()所以中文也算只有8位,但LENGTH()計算中文的時候則多出了6位,因為這份資料是用UTF8編碼,所以中文一字三位元。









使用SUBSTR(),起始以第1位開始切取4位元,並計算是否真的這個切割出來的字串有4位
SELECT username, SUBSTR(username, 1, 4), CHAR_LENGTH(SUBSTR(username, 1, 4))
FROM    user

結果︰














總結︰以目前台灣人的資料而言使用CHARACTER_LENGTH()、CHAR_LENGTH(),會比較安全,但也要看資料庫的編碼而定,而在字串切割部份,兩種各有特色則是視需求選用了。

















其它文章

沒有留言:

張貼留言

標籤

Oracle (150) Oracle DB (144) Oracle_DB (143) Oracle SQL (135) JAVA (84) css-基本類 (65) MySQL (59) CSS Selector (58) jQuery (49) JavaScript-基本類 (39) Spring Boot (38) JavaScript (37) JavaScript HTML DOM (37) JavaScript-HTML_DOM (36) CSS3 (30) JAVA-基本類 (28) jQuery UI (27) Apache (23) Oracle GROUP BY (20) datepicker (20) Android (18) Oracle Date (17) c (17) JAVA-lang套件 (16) Linux (16) Oracle Sub Query (16) Spring-基本類 (16) jQuery-基本類 (16) MySQL-進階系列教學 (15) Android基本類 (14) Grails (14) Oracle join (14) SQLite (13) Spring (13) WIN7-基本類 (13) grails-基本類 (13) linux cent os (13) CKEditor (12) JAVA-流程控制類 (12) JAVA_Spring (12) PHP (11) Spring MVC (11) MySQL-基本系列教學 (10) Notepad (10) Notepad++ (10) SQLite for java (10) Windows (10) c/c++ (10) eclipse (9) jQuery-Selector (9) sqldeveloper (9) DB_Toad (8) JAVA_IDE_Eclipse (8) JavaScript-String類 (8) MySQL DB Toad (8) MySQL-DATE相關 (8) MySQL-函式相關 (8) Spring Bean (8) Android Studio (7) HTML5 (7) Hibernate (7) JAVA-OCWCD (7) JavaScript-陣列類 (7) Docker (6) JAVA-程式分享 (6) JAVA.util套件 (6) JavaScript-數學類 (6) MinGw (6) MySQL-其它類 (6) Servlet (6) centos (6) Apache_Tomcat (5) Apache套件_POI (5) CSS (5) JavaScript-Date物件 (5) JavaScript-其它類 (5) PostgreSQL (5) httpd (5) log4j (5) 基本資訊 (5) 開發工具 (5) CSS Properties (4) Dev-C++ (4) IntelliJ IDEA (4) Oracle DDL (4) Sublime (4) TortoiseSVN (4) apache_Maven (4) Android NDK (3) Eclipse IDE for C/C++ (3) Hibernate-基本類 (3) JAVA-問題 (3) JAVA-綀習分享 (3) JVM (3) Linux 指令 (3) Proxy Server (3) Spring Mobile (3) Spring web (3) Squid (3) VirtualBox (3) maven (3) zk (3) 生活其它 (3) Bootstrap (2) Filter (2) JAVA_IO (2) JAVA_其它_itext套件 (2) JBoss-問題 (2) JSP (2) Jboss (2) Listener (2) MySQL-語法快速查詢 (2) Spring AOP (2) Spring Batch (2) Spring Boot Actuator (2) Spring i18n (2) Subversive (2) Tomcat 8 (2) UML (2) WebJars (2) WinMerge (2) c++ (2) c語言綀習題 (2) jQuery Mobile (2) jQuery-事件處理 (2) jQuery-套件類 (2) putty (2) svn (2) weblogic (2) Apache_JMeter (1) Apache套件_BeanUtils (1) Apache套件_StringUtils (1) Base64 (1) Google API (1) HTML5-基本類 (1) Heap (1) JAVA 7 (1) JAVA SE 、JAVA EE、JAVA ME (1) JAVA 日期 (1) JAVA-OCJP (1) JAVA-WEB (1) JAVA_IDE (1) JAVA其它 (1) JBoss Server (1) JDK (1) JMX (1) JRE (1) Java RMI (1) Java String (1) Joda Time (1) Linux_其它 (1) MySQL教學 (1) Oracle_VirtualBox (1) SQL Server (1) SWT (1) Session (1) Stack (1) Struts 2 (1) Tool (1) ZK Studio (1) csv (1) grails-其它類 (1) jQuery-進階 (1) java mail (1) java web (1) java8 (1) jsoup (1) mockmvc (1) modules (1) tomcat (1) win10 (1) 其它類 (1) 圖片工具 (1) 模擬器 (1) 讀書分享 (1) 開發資訊 (1)

精選文章

初學 Java 的 HelloWorld 程式

撰寫一個JAVA程式 public class HelloWorld{ public static void main(String[ ] args){ System.out.println("我第一支Java程式!!"); } } ...