sql เพิ่มอักขระที่จุดเริ่มต้นของสตริง เกี่ยวกับฟังก์ชันสตริงของ SQL หรือวิธีจัดการกับข้อความในฐานข้อมูล MySQL

ฟังก์ชันและโอเปอเรเตอร์สตริงพื้นฐานมีตัวเลือกที่หลากหลายและส่งคืนค่าสตริงเป็นผลลัพธ์ ฟังก์ชันสตริงบางฟังก์ชันเป็นแบบสององค์ประกอบ ซึ่งหมายความว่าสามารถทำงานกับสองสตริงพร้อมกันได้ มาตรฐาน SQL 2003 รองรับฟังก์ชันสตริง

ตัวดำเนินการเชื่อมต่อ

SQL 2003 กำหนดตัวดำเนินการต่อข้อมูล (||) ที่เชื่อมสตริงที่แยกกันสองสตริงเข้าด้วยกันเป็นค่าสตริงเดียว

แพลตฟอร์ม DB2

แพลตฟอร์ม DB2 รองรับตัวดำเนินการเชื่อมต่อ SQL 2003 เช่นเดียวกับคำพ้องความหมาย ฟังก์ชัน CONCAT

แพลตฟอร์ม MySQL

แพลตฟอร์ม MySQL รองรับฟังก์ชัน CONCATQ ซึ่งเป็นคำพ้องความหมายสำหรับตัวดำเนินการเชื่อมต่อ SQL 2003

Oracle และ PostgreSQL

แพลตฟอร์ม PostgreSQL และ Oracle รองรับตัวดำเนินการเชื่อมต่อแถบแนวตั้งคู่ของ SQL 2003

แพลตฟอร์ม SQL Server

แพลตฟอร์ม เซิร์ฟเวอร์ SQLใช้เครื่องหมายบวก (+) เป็นคำพ้องความหมายสำหรับตัวดำเนินการต่อข้อมูล SQL 2003 SQL Server มี พารามิเตอร์ของระบบ CONCAT_NULL_YIELDS_NULL ซึ่งควบคุมวิธีการทำงานของระบบเมื่อพบค่า NULL เมื่อค่าสตริงเชื่อมต่อกัน

/* ไวยากรณ์ SQL 2003 */

สตริง || string2 || สตริงที่ 3

string1string2string3

/* สำหรับ MySQL */

CONCAT("stringl", "string2")

หากค่าที่ต่อกันมีค่าเป็น null ระบบจะส่งคืนสตริงว่าง นอกจากนี้ หากค่าตัวเลขเกี่ยวข้องกับการต่อข้อมูล ค่านั้นจะถูกแปลงเป็นค่าสตริงโดยปริยาย

เลือก CONCAT("ของฉัน ", "โบโลญญา ", "มี ", "a ", "ตัวแรก ", "ชื่อ…");

โบโลญญาของฉันมีชื่อจริง

เลือก CONCAT("My ", NULL, "has ", "first ", "name…");

แปลงและแปล

ฟังก์ชัน CONVERT เปลี่ยนการแสดงสตริงอักขระภายในชุดอักขระและการเรียง ตัวอย่างเช่น สามารถใช้ฟังก์ชัน CONVERT เพื่อเปลี่ยนจำนวนบิตต่ออักขระ

ฟังก์ชัน TRANSLATE แปลค่าสตริงจากชุดอักขระหนึ่งไปยังอีกชุดหนึ่ง ตัวอย่างเช่น สามารถใช้ฟังก์ชัน TRANSLATE เพื่อแปลงค่าจากชุดอักขระภาษาอังกฤษเป็นชุดอักขระคันจิ (ญี่ปุ่น) หรือซีริลลิก (รัสเซีย) การแปลนั้นต้องมีอยู่แล้ว โดยค่าเริ่มต้นหรือสร้างขึ้นด้วยคำสั่ง CREATE TRANSLATION

ไวยากรณ์ SQL 2003

แปลง ( character_value โดยใช้ char_convert_name )

TRANSLATE(ตัวอักษร_ค่าโดยใช้ชื่อtranslate_name)

ฟังก์ชัน CONVERT แปลงค่าอักขระเป็นชุดอักขระด้วยชื่อที่ระบุในพารามิเตอร์ character_conversion_name ฟังก์ชัน TRANSLATE แปลงค่าอักขระเป็นชุดอักขระที่ระบุใน translate_name

ในบรรดาแพลตฟอร์มที่ได้รับการพิจารณา มีเพียง Oracle เท่านั้นที่รองรับฟังก์ชัน CONVERT และ TRANSLATE ตามที่กำหนดไว้ในมาตรฐาน SQL 2003 การใช้ฟังก์ชัน TRANSLATE ของ Oracle นั้นคล้ายคลึงกันมาก แต่ไม่เหมือนกับ SQL 2003 ในการใช้งานนี้ ฟังก์ชันรับอาร์กิวเมนต์เพียงสองอาร์กิวเมนต์และแปลเฉพาะระหว่างชุดอักขระฐานข้อมูลและชุดอักขระที่เปิดใช้โลแคลเท่านั้น

การใช้ฟังก์ชัน CONV ของ MySQL จะแปลงตัวเลขจากฐานหนึ่งไปยังอีกฐานหนึ่งเท่านั้น อย่างไรก็ตาม ใน SQL Server การนำฟังก์ชัน CONVERT ไปใช้นั้นมีความสมบูรณ์มากและเปลี่ยนประเภทข้อมูลของนิพจน์ แต่ในแง่อื่น ๆ ทั้งหมดนั้นแตกต่างจากฟังก์ชัน CONVERT มาตรฐาน SQL 2003 แพลตฟอร์ม PostgreSQL ไม่รองรับฟังก์ชัน CONVERT และ การใช้งานฟังก์ชัน TRANSLATE จะแปลงสตริงอักขระที่เกิดขึ้นทั้งหมดเป็นสตริงอักขระอื่น

ดีบีทู

แพลตฟอร์ม DB2 ไม่รองรับฟังก์ชัน CONVERT และการรองรับฟังก์ชัน TRANSLATE ไม่เป็นไปตามมาตรฐาน ANSI ฟังก์ชัน TRANSLATE ใช้เพื่อแปลงสตริงย่อย และเคยมีความหมายเหมือนกันกับฟังก์ชัน UPPER เนื่องจากเพิ่งเพิ่มฟังก์ชัน UPPER ลงใน DB2 เมื่อเร็วๆ นี้ หากใช้ฟังก์ชัน TRANSLATE ใน DB2 ด้วยอาร์กิวเมนต์ expression อักขระเดียว ผลลัพธ์จะเป็นสตริงเดียวกันที่แปลงเป็นตัวพิมพ์ใหญ่ หากใช้ฟังก์ชันกับหลายอาร์กิวเมนต์ เช่น TRANSLATE(ucmo4HUK, แทนที่, จับคู่) ฟังก์ชันจะแปลงอักขระทั้งหมดในแหล่งที่มาซึ่งอยู่ในพารามิเตอร์การจับคู่ด้วย อักขระแต่ละตัวในแหล่งที่มาซึ่งอยู่ในตำแหน่งเดียวกับพารามิเตอร์การจับคู่จะถูกแทนที่ด้วยอักขระจากพารามิเตอร์แทนที่ ด้านล่างนี้คือตัวอย่าง

TRANSLATE("สวัสดีชาวโลก!") "สวัสดีชาวโลก!"

TRANSLATE("สวัสดี World1", "wZ", "1W") "ฮิวโว, Zorwd1

มายเอสคิวแอล

แพลตฟอร์ม MySQL ไม่รองรับฟังก์ชัน TRANSLATE และ CONVERT

ออราเคิล

แพลตฟอร์ม Oracle รองรับไวยากรณ์ต่อไปนี้สำหรับฟังก์ชัน CONVERT และ TRANSLATE

ในการใช้งาน Oracle ฟังก์ชัน CONVERT จะส่งคืนข้อความค่าอักขระที่แปลงเป็น target_character_set พารามิเตอร์ character_value คือสตริงที่จะแปลง พารามิเตอร์ target_charset คือชื่อของชุดอักขระที่จะแปลงสตริง และพารามิเตอร์ source_charset คือชุดอักขระที่เก็บค่าสตริงไว้แต่เดิม

ฟังก์ชัน TRANSLATE ใน Oracle เป็นไปตามไวยากรณ์ ANSI แต่คุณสามารถเลือกชุดอักขระชุดใดชุดหนึ่งจากสองชุดเท่านั้น: ชุดอักขระฐานข้อมูล (CHARJCS) และชุดอักขระที่รองรับภาษาประจำชาติ (NCHARJZS)

Oracle ยังรองรับฟังก์ชันอื่นที่เรียกว่า TRANSLATE (โดยไม่ต้องใช้ คำสำคัญโดยใช้). ฟังก์ชัน TRANSLATE นี้ไม่เกี่ยวข้องกับการแปลงชุดอักขระ

ชื่อของชุดอักขระเป้าหมายและแหล่งที่มาสามารถส่งผ่านเป็นค่าคงที่ของสตริงหรือเป็นการอ้างอิงไปยังคอลัมน์ของตารางก็ได้ โปรดทราบว่าเมื่อแปลงสตริงเป็นชุดอักขระที่ไม่ได้แสดงอักขระที่แปลงแล้วทั้งหมด คุณสามารถแทนที่อักขระตัวแทนได้

Oracle รองรับชุดอักขระทั่วไปหลายชุด ซึ่งรวมถึง US7ASCII, WE8DECDEC WE8HP, F7DEC, WE8EBCDIC500, WE8PC850u WE8ISO8859PI. ตัวอย่างเช่น:

เลือกแปลง ("Gro2", "US7ASCII", "WE8HP") จากคู่;

PostgreSQL

แพลตฟอร์ม PostgreSQL รองรับคำสั่ง ANSI CONVERT และสามารถกำหนดการแปลงได้ที่นี่โดยใช้คำสั่ง CREATE CONVERSION การใช้งานฟังก์ชัน TRANSLATE ของ PostgreSQL มีชุดฟังก์ชันเพิ่มเติมที่ช่วยให้คุณสามารถแปลงข้อความเป็นข้อความอื่นภายในสตริงที่ระบุ

แปล (สตริงอักขระ, from_text, to_text)

นี่คือตัวอย่างบางส่วน:

เลือกแปล("12345abcde", "5a", "XX"); "1234XXbcde" เลือกแปล (ชื่อเรื่อง "คอมพิวเตอร์", "พีซี") จากชื่อเรื่อง WHERE type="Personal_computer" เลือก CONVERT("PostgreSQL" USING iso_8859_1_to_utf_8) "PostgreSQL"

เซิร์ฟเวอร์ SQL

แพลตฟอร์ม SQL Server ไม่รองรับฟังก์ชัน TRANSLATE การใช้ฟังก์ชัน CONVERT ของ SQL Server ไม่เป็นไปตามมาตรฐาน SQL 2003 ฟังก์ชันนี้เทียบเท่ากับฟังก์ชัน CAST ใน SQL Server

แปลง (ประเภทข้อมูล[(ความยาว) | (ความแม่นยำ ขนาด)], นิพจน์ รูปแบบ])

สไตล์คำสั่งใช้เพื่อกำหนดรูปแบบการแปลงวันที่ ด้านหลัง ข้อมูลเพิ่มเติมโปรดดูเอกสารประกอบของ SQL Server ด้านล่างนี้คือตัวอย่าง

เลือกชื่อ, แปลง(ถ่าน(7), ytd_sales) จากชื่อเรื่อง ORDER BY title GO

ในส่วนนี้เราจะพูดถึงฟังก์ชั่นการทำงานกับข้อมูลที่เป็นตัวอักษรที่สามารถใช้ในการสืบค้นและ รหัสโปรแกรมใน PL/SQL

ฟังก์ชัน CONCAT(strl, str2)

ฟังก์ชันนี้เชื่อมสตริง strl และ str2 เข้าด้วยกัน หากอาร์กิวเมนต์ตัวใดตัวหนึ่งเป็น NULL จะถือว่าเป็นสตริงว่าง ถ้าอาร์กิวเมนต์ทั้งสองเป็น NULL ฟังก์ชันจะคืนค่า NULL ตัวอย่าง:

เลือก CONCAT("นักบวช\"มีสุนัข") x1,
CONCATTest" , NULL) x2,
CONCAT(โมฆะ, "ทดสอบ") x3,
คอนแคต(โมฆะ, โมฆะ) x4
จากคู่

สมเด็จพระสันตะปาปามีสุนัข

สำหรับการต่อสตริง Oracle รองรับตัวดำเนินการต่อข้อมูลพิเศษ "||" ที่ทำงานคล้ายกับฟังก์ชัน CONCAT ตัวอย่างเช่น:

SELECT CONCAT("นักบวช\"มีสุนัข") x1, "นักบวช" || "มีสุนัข" x2
จากคู่

อย่าสับสนระหว่างตัวดำเนินการการต่อข้อมูล "||" ซึ่งเทียบเท่ากับการเรียกใช้ฟังก์ชัน CONCAT และตัวดำเนินการ "+" ที่ใช้ในการดำเนินการทางคณิตศาสตร์ ใน Oracle มันคือ ตัวดำเนินการที่แตกต่างกันแต่เนื่องจากการพิมพ์แบบอัตโนมัติ ข้อผิดพลาดเล็กน้อยจึงเป็นไปได้ ตัวอย่างเช่น:

เลือก "5" + "3" x1
จากคู่

ในกรณีนี้ จะส่งกลับค่าตัวเลข 8 ไม่ใช่ สตริงข้อความ"53". นี่เป็นเพราะความจริงที่ว่าเมื่อตรวจพบการดำเนินการทางคณิตศาสตร์ "+" Oracle จะพยายามส่งอาร์กิวเมนต์ไปยังประเภท NUMBER โดยอัตโนมัติ

ฟังก์ชัน LOWER(str)

ฟังก์ชัน LOWER แปลงอักขระทั้งหมดของสตริง str เป็นตัวพิมพ์เล็ก ตัวอย่าง:

เลือก LOWER("ข้อมูลข้อความ") X
จากคู่

การทำงานบน(str)

ฟังก์ชัน UPPER แปลงอักขระทั้งหมดในสตริง str เป็นตัวพิมพ์ใหญ่ ตัวอย่าง:

เลือกบน("ข้อมูลข้อความ") X
จากคู่

ฟังก์ชัน INITCAP(str)

ส่งกลับสตริง str ที่มีตัวอักษรตัวแรกของทุกคำที่แปลงเป็นตัวพิมพ์ใหญ่ ฟังก์ชันนี้มีประโยชน์สำหรับการจัดรูปแบบชื่อเต็มเมื่อสร้างรายงาน ตัวอย่าง:

เลือก INITCAPCIvanov Petr Sidorovich") X
จากคู่

ฟังก์ชั่นLTRIM(str[,ชุด])และRTRIM(str[,ชุด])

ฟังก์ชัน LTRIM จะลบอักขระทั้งหมดจากจุดเริ่มต้นของสตริงจนถึงอักขระตัวแรกที่ไม่ได้อยู่ในชุดอักขระที่ตั้งไว้ ตามค่าเริ่มต้น set ประกอบด้วยช่องว่างเดียวและอาจละเว้นได้ ฟังก์ชัน RTRIM คล้ายกับ LTRIM แต่จะลบอักขระออกจากส่วนท้ายของสตริง ลองดูตัวอย่าง:

เลือก LTRIM(" ข้อมูลข้อความ") X1,
LTRIM(" _ # ข้อมูลข้อความ", " #_") X2,
LTRIM(" 1234567890 ข้อมูลข้อความ", " 1234567890") X3
จากคู่

ฟังก์ชัน REPLACE(str, search_str, [,replace_str])

ฟังก์ชัน REPLACE ค้นหารูปแบบ search_str ในสตริง str และแทนที่แต่ละเหตุการณ์ด้วยแทนที่ ตามค่าเริ่มต้น แทนที่_strเป็นสตริงว่าง ดังนั้นการเรียกใช้ฟังก์ชันREPLACEด้วยสองอาร์กิวเมนต์จะลบเหตุการณ์ทั้งหมดที่พบ การค้นหาสตริงย่อยจะคำนึงถึงตัวพิมพ์เล็กและใหญ่ ตัวอย่าง:

SELECT REPLACE("พระสงฆ์มีสุนัข", "สุนัข", "แมว") x1,
REPLACE("นักบวชมีสุนัขขี้โมโห", "ชั่วร้าย") x2,
REPLACE("นักบวชมีสุนัข", "สุนัข", "แมว") x3
จากคู่

สมเด็จพระสันตะปาปามีแมว

สมเด็จพระสันตะปาปามีสุนัข

สมเด็จพระสันตะปาปามีสุนัข

ฟังก์ชัน TRANSLATE(str, from_mask, to_mask)

ฟังก์ชัน TRANSLATE แยกวิเคราะห์สตริง str และแทนที่อักขระทั้งหมดในสตริง from_mask ด้วยอักขระที่สอดคล้องกันจาก to_mask เพื่อให้ฟังก์ชันทำงานได้อย่างถูกต้อง สตริง from_mask และ to_mask ต้องมีความยาวเท่ากัน หรือสตริง from_mask ต้องยาวกว่า to_mask หาก from_mask ยาวกว่า to_mask และระหว่างการประมวลผลของสตริง str พบอักขระที่ตรงกับหนึ่งในอักขระจาก from_mask และไม่ตรงกับอักขระเหล่านั้นใน to_mask ดังนั้นอักขระดังกล่าวจะถูกลบออกจากสตริง str หากคุณส่งผ่าน from_mask หรือ to_mask เท่ากับ NULL ฟังก์ชันจะคืนค่า NULL การเปรียบเทียบเป็นแบบคำนึงถึงตัวพิมพ์เล็กและใหญ่

เลือกแปล("ทดสอบ 12345", "e2\ "E!") x1,
แปล("ทดสอบ 12345", "e234", "E") x2
จากคู่

ฟังก์ชันนี้สะดวกสำหรับการแก้ปัญหาเชิงปฏิบัติที่เกี่ยวข้องกับการแปลงอักขระหรือการค้นหาอักขระต้องห้าม ตัวอย่างเช่น คุณต้องวิเคราะห์รหัสผ่านและดูว่ามีตัวเลขอย่างน้อยหนึ่งตัวหรือไม่ การดำเนินการตรวจสอบนี้โดยใช้ TRANSLATE มีลักษณะดังนี้:

ถ้าแปล(PassWd, "0123456789", "*") = PassWd แล้ว
ADD_ERR0R("ข้อผิดพลาด - รหัสผ่านต้องมีตัวเลขอย่างน้อยหนึ่งตัว!");
กลับ 1;
สิ้นสุดถ้า;

อีกตัวอย่างหนึ่ง: กำลังเตรียมตัวเลขสำหรับการแปลงเป็น NUMBER คุณต้องแทนที่ตัวคั่นทศนิยม "," และ "." บน "." และลบช่องว่าง การใช้งานการดำเนินการนี้โดยใช้ TRANSLATE มีลักษณะดังนี้:

เลือกแปล("123 455.23", "., ", " . . ") x1,
แปล("-123 455.23", "., ", " . . ") x2
จากคู่

ฟังก์ชัน SUBSTR(str, m[,n])

ฟังก์ชัน SUBSTR ส่งกลับส่วนของสตริง str โดยเริ่มต้นที่อักขระ m ของความยาว n อักขระ สามารถละความยาวได้ - ในกรณีนี้ สตริงจะถูกส่งกลับจากอักขระ m ไปยังจุดสิ้นสุดของสตริง str อักขระมีหมายเลขตั้งแต่ 1 หากคุณระบุ m = 0 การคัดลอกจะยังคงเริ่มจากอักขระตัวแรก การระบุค่าลบสำหรับ m ทำให้อักขระถูกนับจากจุดสิ้นสุดของสตริง ไม่ใช่จากจุดเริ่มต้น การระบุค่า m ที่มากกว่าความยาวของสตริงในค่าสัมบูรณ์ทำให้ฟังก์ชันส่งคืนค่า NULL

เลือก SUBSTR("พระสงฆ์มีสุนัข", 13) x1,
SUBSTR("นักบวชมีสุนัข", -6) x2,
SUBSTR("นี่คือข้อความทดสอบ", 5, 8) x3,
SUBSTR("นักบวชมีสุนัข", 150) x4
จากคู่

ข้อความ

ฟังก์ชัน INSTR(str, search_str [,n[,m]])

ฟังก์ชัน INSTR ส่งกลับตำแหน่งของอักขระตัวแรกของ m-ro ของแฟรกเมนต์ของสตริง str ที่ตรงกับสตริง search_str การเปรียบเทียบทำจากอักขระตัวที่ n ของสตริง str การเปรียบเทียบคำนึงถึงขนาดตัวพิมพ์ ตามค่าเริ่มต้น n = m = 1 นั่นคือการค้นหาจะดำเนินการจากจุดเริ่มต้นของสตริงและส่งคืนตำแหน่งของชิ้นส่วนที่พบครั้งแรก หากการค้นหาล้มเหลว ฟังก์ชันจะคืนค่า 0

SELECT INSTR("y butt was a dog", "dog") x1,
INSTR("ก้นมึงเป็นหมา", "แมว") x2,
INSTR("นี่คือข้อความเพื่อสาธิตการค้นหาข้อความ", "ข้อความ", 1, 2) x3,
INSTR('11111000000001", "1", 7) x4
จากคู่

ด้วยฟังก์ชันนี้ เช่นเดียวกับฟังก์ชันอื่นๆ ทั้งหมดใน Oracle ข้อผิดพลาดทั่วไปมักเกี่ยวข้องกับการจัดการค่า NULL ถ้า str=NULL ฟังก์ชันจะคืนค่า NULL ไม่ใช่ศูนย์! สิ่งนี้จะต้องนำมาพิจารณาเมื่อสร้างเงื่อนไขต่างๆ ตัวอย่างเช่น ส่วนย่อยของโปรแกรม PL/SQL นี้ไม่ได้คำนึงถึงคุณสมบัตินี้:

หาก INSTR(TXT_VAR,"*") = 0 แล้ว
...
จบถ้า;

ในกรณีนี้ เขียนแบบนี้น่าจะถูกต้อง

ถ้า NVL(INSTR(TXT_VAR, "*"), 0) = 0 จากนั้น
...
สิ้นสุดถ้า;

ฟังก์ชัน LENGTH(str) และ LENGTHB(str)

ฟังก์ชัน LENGTH(str) ส่งกลับความยาวของสตริง str เป็นอักขระ สำหรับสตริงว่างและค่า NULL ฟังก์ชันจะคืนค่า NULL ดังนั้นแนะนำให้ใช้ NVL กับฟังก์ชันนี้

เลือกความยาว("นักบวชมีสุนัข") x1,
ความยาว("") x2,
ความยาว (โมฆะ) x3,
NVL(ความยาว(""), 0) x4
จากคู่

ฟังก์ชัน LENGTHB คล้ายกับฟังก์ชัน LENGTH แต่จะคืนค่าความยาวของสตริงเป็นไบต์

ฟังก์ชัน ASCII(str)

ส่งคืนรหัส ASCII ของอักขระตัวแรกของ str เมื่อใช้การเข้ารหัส ASCII และค่าของไบต์แรกของอักขระหลายไบต์เมื่อใช้การเข้ารหัสอักขระหลายไบต์ ตัวอย่าง:

เลือก ASCII("ทดสอบ") x1 จากคู่

ฟังก์ชัน CHR(n)

ส่งกลับอักขระด้วยรหัสของมัน

เลือก CHR(64) x1
จากคู่

ให้กับผู้อื่น มีไวยากรณ์ดังต่อไปนี้:

CONV(หมายเลข,N,M)

การโต้แย้ง ตัวเลขอยู่ในระบบตัวเลขที่มีฐาน N ฟังก์ชันจะแปลงเป็นระบบตัวเลขที่มีฐาน M และส่งกลับค่าเป็นสตริง

ตัวอย่างที่ 1

ข้อความค้นหาต่อไปนี้จะแปลงเลข 2 จากเลขฐานสิบเป็นเลขฐานสอง:

เลือก CONV(2,10,2);

ผลลัพธ์: 10

หากต้องการแปลงเลข 2E จากเลขฐานสิบหกเป็นเลขฐานสิบ จำเป็นต้องมีแบบสอบถาม:

เลือก CONV("2E",16,10);

ผลลัพธ์: 46

การทำงาน ชาร์()แปลรหัส ASCII เป็นสตริง มีไวยากรณ์ดังต่อไปนี้:

CHAR(n1,n2,n3..)

ตัวอย่างที่ 2

เลือก CHAR(83,81,76);

ผลลัพธ์: SQL

ฟังก์ชันต่อไปนี้ส่งคืนความยาวของสตริง:

  • ความยาว (สตริง);
  • OCTET_LENGTH(สตริง);
  • CHAR_LENGTH(สตริง);
  • CHARACTER_LENGTH(สตริง)

ตัวอย่างที่ 3

เลือกความยาว ("MySQL");

ผลลัพธ์: 5

บางครั้งคุณสมบัติที่มีประโยชน์ BIT_LENGTH(สตริง)ซึ่งจะส่งคืนความยาวของสตริงเป็นบิต

ตัวอย่างที่ 4

เลือก BIT_LENGTH("MySQL");

ผลลัพธ์: 40

ฟังก์ชันสตริงย่อย

สตริงย่อยมักจะเป็นส่วนหนึ่งของสตริง บ่อยครั้งที่คุณต้องการทราบตำแหน่งที่เกิดขึ้นครั้งแรกของสตริงย่อยในสตริง มีสามฟังก์ชันที่ช่วยแก้ปัญหานี้ใน MySQL:

  • ค้นหา (สตริงย่อย, สตริง [, ตำแหน่ง]);
  • ตำแหน่ง (สตริงย่อย, สตริง);
  • INSTR(สตริง, สตริงย่อย)

ถ้าสตริงย่อยไม่มีอยู่ในสตริง ฟังก์ชันทั้งสามจะคืนค่า 0 ฟังก์ชัน INSTR() แตกต่างจากอีกสองฟังก์ชันตามลำดับของอาร์กิวเมนต์ ฟังก์ชัน LOCATE() อาจมีอาร์กิวเมนต์ที่สาม ตำแหน่งซึ่งช่วยให้คุณค้นหาสตริงย่อยในสตริงที่ไม่ใช่จากจุดเริ่มต้น แต่จากตำแหน่งที่ระบุ

ตัวอย่างที่ 5

SELECT LOCATE("บุษราคัม", "บุษราคัม");

ผลลัพธ์: 31

เลือกตำแหน่ง ("บุษราคัม", "บุษราคัม");

ผลลัพธ์: 31

SELECT INSTR("บุษราคัม",'บุษราคัม');

ผลลัพธ์: 31

เลือก LOCATE("บุษราคัม", "โรงงานบุษราคัมและ LLC บุษราคัม", 9);

ผลลัพธ์: 20

เลือกตำแหน่ง("เพชร", "บุษราคัม");

ผลลัพธ์: 0

ฟังก์ชั่น ซ้าย(บรรทัด, N)และ ขวา(สตริง, N)ส่งคืนอักขระ N ตัวซ้ายสุดและขวาสุดในสตริงตามลำดับ

ตัวอย่างที่ 6

เลือกซ้าย("MySQL DBMS", 4);

ผลลัพธ์: DBMS

เลือกทางขวา("MySQL DBMS", 5);

ผลลัพธ์: MySQL

บางครั้งคุณต้องรับสตริงย่อยที่เริ่มต้นที่ตำแหน่งที่กำหนด ฟังก์ชันต่อไปนี้ใช้สำหรับสิ่งนี้:

  • SUBSTRING(สตริง, ตำแหน่ง, N);
  • MID(สตริง, ตำแหน่ง, N)

ทั้งสองฟังก์ชันส่งคืนอักขระ N ตัวของสตริงที่กำหนด โดยเริ่มต้นที่ตำแหน่งที่กำหนด

ตัวอย่างที่ 7

เลือก SUBSTRING("MySQL DBMS เป็นหนึ่งใน DBMS ที่ได้รับความนิยมมากที่สุด", 6,5);

ผลลัพธ์: MySQL

เมื่อทำงานกับที่อยู่อีเมลและที่อยู่เว็บไซต์ ฟังก์ชันนี้มีประโยชน์มาก SUBSTR_INDEX(). ฟังก์ชันมีสามอาร์กิวเมนต์:

SUBSTR_INDEX(สตริง ตัวคั่น N)

อาร์กิวเมนต์ N อาจเป็นค่าบวกหรือค่าลบก็ได้ หากเป็นค่าลบ ฟังก์ชันจะค้นหาการเกิดขึ้นครั้งที่ N ของตัวคั่น โดยนับจากด้านขวา จากนั้นจะส่งกลับสตริงย่อยที่อยู่ทางด้านขวาของตัวคั่นที่พบ ถ้า N เป็นค่าบวก ฟังก์ชันจะค้นหาการเกิดขึ้นครั้งที่ N ของตัวคั่นทางด้านซ้าย และส่งกลับสตริงย่อยทางด้านซ้ายของตัวคั่นที่พบ

ตัวอย่างที่ 8

เลือก SUBSTRING_INDEX("www.mysql.ru",".",2);

ผลลัพธ์: www.mysql

เลือก SUBSTRING_INDEX("www.mysql.ru",".",-2);

ผลลัพธ์: mysql.com

การทำงาน แทนที่ (สตริง, สตริงย่อย 1, สตริงย่อย 2)ให้คุณแทนที่ substring1 ที่เกิดขึ้นทั้งหมดในสตริงด้วย substring2

จากหนังสือ รีจิสทรีของ Windows ผู้เขียน Klimov A

เสร็จสิ้นอย่างรวดเร็ว การทำงานของวินโดวส์(Windows NT/2000/XP) Windows NT เวอร์ชัน 3.1 และ 3.5 ทำให้สามารถปิดกระบวนการทั้งหมดได้ใน 20 วินาที ใน Windows NT 3.51 และสูงกว่า คุณสามารถระบุระยะเวลาที่ระบบควรใช้ในการปิดระบบได้ ในการทำเช่นนี้คุณต้องแก้ไขรหัส

จากหนังสือการประมวลผลฐานข้อมูลบน วิชวลเบสิก®.NET ผู้เขียน แมคมานัส เจฟฟรีย์ พี

บทที่ 3 แนะนำ SQL Server 2000 ในอดีต โปรแกรมเมอร์จำนวนมากเริ่มสร้างแอปพลิเคชันฐานข้อมูลโดยใช้ภาษา Visual Basic และฐานข้อมูล SQL Server 2000 ข้อมูลไมโครซอฟต์เข้าถึงด้วยแกนเจ็ท ทันทีที่ฐานข้อมูลเพิ่มขึ้นเป็นหลายพันระเบียนหรือหลายบริการเข้าถึงได้

จากหนังสือ สคริปต์ Windowsโฮสต์สำหรับ Windows 2000/XP ผู้เขียน โปปอฟ อันเดรย์ วลาดิมิโรวิช

ข้อกำหนดในการติดตั้ง SQL Server 2000 ในการติดตั้ง SQL Server 2000 คุณต้องใช้คอมพิวเตอร์ที่มีโปรเซสเซอร์ Pentium (หรือเข้ากันได้) ที่มีความถี่อย่างน้อย 166 MHz พื้นที่ว่างในฮาร์ดดิสก์ตั้งแต่ 95 ถึง 270 MB (270 MB สำหรับการติดตั้งทั่วไป และ 44 MB สำหรับ Desktop Engine) ดิสก์ไดรฟ์

จากหนังสือสิ่งที่ไม่ได้เขียนในหนังสือเดลฟี ผู้เขียน Grigoriev A. B.

การติดตั้ง SQL Server 2000 หลังจากเลือกคอมพิวเตอร์ที่มีการกำหนดค่าที่ต้องการแล้ว คุณสามารถดำเนินการติดตั้งต่อได้ โดยทั่วไป กระบวนการติดตั้ง SQL Server 2000 นั้นง่ายมาก โดยมีข้อยกเว้นดังต่อไปนี้: ใช้เวลานาน; ในระหว่างกระบวนการติดตั้ง ในตอนแรกจะมีคำถามมากมาย

จากคู่มือ PHP ของผู้เขียน

พื้นฐาน SQL Server 2000 หลังการติดตั้งและ การเริ่มต้น SQLเซิร์ฟเวอร์ต้องดำเนินการตามขั้นตอนต่อไปนี้ก่อนที่จะดำเนินการดึงหรือบันทึกข้อมูล: สร้างฐานข้อมูลตั้งแต่หนึ่งฐานข้อมูลขึ้นไป สร้างตารางในฐานข้อมูล สร้างมุมมองและเก็บไว้

จากหนังสือ XSLT ผู้เขียน โฮลซ์เนอร์ สตีเฟ่น

ฟังก์ชันสำหรับการทำงานกับอาร์เรย์ A2.17 แสดงฟังก์ชันที่คุณสามารถสร้างอาร์เรย์ใหม่และรับข้อมูลเกี่ยวกับอาร์เรย์ที่มีอยู่ได้ ตาราง A2.17 Array Functions Function Description Array(arglist) ส่งกลับค่าตัวแปรที่เป็น

จากหนังสือ Linux: คู่มือฉบับสมบูรณ์ ผู้เขียน Kolisnichenko เดนิส นิโคลาเยวิช

3.3. รายละเอียดปลีกย่อยของการทำงานกับสตริง ในส่วนนี้ เราจะพิจารณารายละเอียดปลีกย่อยของการทำงานกับสตริง ซึ่งช่วยให้เราเข้าใจได้ดีขึ้นว่าโค้ดใดที่คอมไพเลอร์สร้างขึ้นสำหรับการกระทำบางอย่างที่ดูเหมือนพื้นฐาน ไม่ใช่ทุกตัวอย่างที่ให้ไว้ที่นี่ทำงานแตกต่างจาก

จากหนังสือ The Art of Shell Scripting Programming โดยคูเปอร์ เมนเดล

จากหนังสือภาษา C - คู่มือสำหรับผู้เริ่มต้น ผู้เขียน พราตา สตีเฟน

ฟังก์ชัน XPath สำหรับการทำงานกับสตริง ฟังก์ชัน XPath ต่อไปนี้สำหรับการทำงานกับสตริงมีอยู่ใน XSLT: concat(string string1, string string2,...) คืนค่าการต่อข้อมูล (ยูเนี่ยน) ของสตริงทั้งหมดที่ส่งผ่านไปยังสตริงนั้น มี (สตริง string1, สตริง string2) คืนค่าจริงหากบรรทัดแรกมี (มี) บรรทัดที่สอง

จากหนังสือ Linux และ UNIX: การเขียนโปรแกรมเชลล์ คู่มือนักพัฒนา ผู้เขียน เทนสลีย์ เดวิด

23.2.2. ฟังก์ชันหน่วยความจำของ Glib ทำงานเหมือนกับฟังก์ชัน C ที่เกี่ยวข้อง นี่คือต้นแบบ: gpointer g_malloc(gulong size);gpointer g_realloc(gpointer mem, gulong size);void g_free(gpointer

จากหนังสือ Description of the PascalABC.NET Language ผู้เขียน ทีมงานรูบอร์ด

จากหนังสือของผู้แต่ง

13. สตริงอักขระและฟังก์ชันบนสตริง

จากหนังสือของผู้แต่ง

ฟังก์ชันสตริง ไลบรารี C ส่วนใหญ่มีฟังก์ชันที่ทำงานบนสตริง มาดูสี่รายการที่มีประโยชน์และพบได้บ่อยที่สุด: strlen(), strcat(), strcmp() และ strcpy() เราได้ใช้ฟังก์ชัน strlen() ซึ่งค้นหาความยาวของสตริงแล้ว

จากหนังสือของผู้แต่ง

จากหนังสือของผู้แต่ง

รูทีนย่อยสำหรับการทำงานกับอักขระและสตริง ฟังก์ชัน Chr(a: byte): char; แปลงรหัสเป็นฟังก์ชันอักขระที่เข้ารหัสด้วย Windows ChrUnicode(a: word): char; แปลงโค้ดเป็นฟังก์ชันอักขระ Unicode OrdUnicode(a: char): word; แปลงอักขระเป็นฟังก์ชันโค้ด Unicode UpperCase(ch: char): char;

จากหนังสือของผู้แต่ง

ฟังก์ชันสี ชนิดสีเป็นชื่อพ้องสำหรับ System.Drawing.Color ฟังก์ชัน RGB(r,g,b: ไบต์): สี; ส่งกลับสีที่มีองค์ประกอบสีแดง (r) สีเขียว (g) และสีน้ำเงิน (b) (r,g และ b - ตั้งแต่ 0 ถึง 255) ฟังก์ชัน ARGB(a,r,g,b: ไบต์): สี ; ส่งกลับสีที่มี

ที่นี่ รายการที่สมบูรณ์ฟังก์ชันสตริงที่นำมาจาก BOL:

ผลลัพธ์คือ 11 หากต้องการทราบว่าเป็นตัวอักษรใด เราสามารถใช้ฟังก์ชัน CHAR ซึ่งส่งคืนอักขระที่กำหนดรหัส ASCII ที่รู้จัก (จาก 0 ถึง 255):

และนี่คือวิธีการ ตัวอย่างเช่น คุณจะได้รับตารางรหัสสำหรับอักขระที่เป็นตัวอักษรทั้งหมด:

เลือก CHAR(ASCII("a")+ num-1) ตัวอักษร, ASCII("a")+ num - 1 จาก (SELECT 5*5*(a-1)+5*(b-1) + c AS num จาก (เลือก 1 a UNION เลือกทั้งหมด 2 UNION เลือกทั้งหมด 3 UNION เลือกทั้งหมด 4 UNION เลือกทั้งหมด 5) x CROSS JOIN (เลือก 1 b UNION เลือกทั้งหมด 2 UNION เลือกทั้งหมด 3 UNION เลือกทั้งหมด 4 UNION เลือกทั้งหมด 5) y CROSS JOIN ( SELECT 1 c UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5) z) x WHERE ASCII("a")+ num -1 BETWEEN ASCII("a") และ ASCII("z")

ผู้ที่ยังไม่ทราบการสร้างลำดับตัวเลข ฉันอ้างถึงบทความที่เกี่ยวข้อง

อย่างที่คุณทราบรหัสของตัวพิมพ์เล็กและตัวพิมพ์ใหญ่นั้นแตกต่างกัน ดังนั้น เพื่อให้ได้ชุดเต็มโดยไม่ต้องเขียนแบบสอบถามใหม่ คุณเพียงแค่เพิ่มชุดที่คล้ายกันในโค้ดด้านบน:

ฉันเชื่อว่าการเพิ่มจดหมายนี้ลงในตารางนั้นไม่ใช่เรื่องยากหากจำเป็น

พิจารณาปัญหาในการค้นหาสตริงย่อยที่ต้องการในนิพจน์สตริง สามารถใช้สองฟังก์ชั่นนี้ - CHARINDEXและ แพทอินเด็กซ์. ทั้งคู่ส่งคืนตำแหน่งเริ่มต้น (ตำแหน่งของอักขระตัวแรกของสตริงย่อย) ของสตริงย่อยในสตริง ฟังก์ชัน CHARINDEX มีไวยากรณ์:

ชารินเด็กซ์ ( search_expression, string_expression[, start_position])

นี่คือพารามิเตอร์จำนวนเต็มทางเลือก start_positionระบุตำแหน่งในนิพจน์สตริงที่ต้องการค้นหา search_expression. หากไม่ระบุพารามิเตอร์นี้ การค้นหาจะดำเนินการตั้งแต่เริ่มต้น string_expression. ตัวอย่างเช่น คำขอ

ควรสังเกตว่าหากสตริงย่อยหรือนิพจน์สตริงที่ค้นหาเป็น NULL ผลลัพธ์ของฟังก์ชันจะเป็น NULL ด้วย

ตัวอย่างต่อไปนี้กำหนดตำแหน่งของอักขระ "a" ที่เกิดขึ้นครั้งแรกและครั้งที่สองในชื่อเรือ "California"

ตัวอย่างเช่น คุณจะหาชื่อเรือที่มีลำดับของอักขระสามตัวได้อย่างไร โดยตัวแรกและตัวสุดท้ายคือ "e":

ห้องอบไอน้ำถึง ซ้ายการทำงาน ขวาส่งกลับจำนวนอักขระที่กำหนดทางด้านขวาของนิพจน์สตริง:

ขวา(<นิพจน์สตริง>,<จำนวนตัวอักษร>)

ตัวอย่างเช่น นี่คือวิธีที่คุณสามารถกำหนดชื่อเรือที่ขึ้นต้นและลงท้ายด้วยตัวอักษรเดียวกัน:

ที่นี่เราแยกชื่อชั้นและชื่อเรือด้วยช่องว่าง นอกจากนี้ เพื่อไม่ให้การสร้างซ้ำทั้งหมดเป็นอาร์กิวเมนต์ของฟังก์ชัน เราจึงใช้แบบสอบถามย่อย ผลลัพธ์จะมีลักษณะดังนี้:

หากต้องการยกเว้นกรณีนี้ คุณสามารถใช้อีกกรณีหนึ่งได้ คุณสมบัติที่มีประโยชน์ เลน (<นิพจน์สตริง>) ซึ่งส่งคืนจำนวนอักขระในสตริง เราจำกัดตัวเองไว้ในกรณีที่จำนวนอักขระมากกว่าหนึ่งตัว:

การทำงาน ทำซ้ำเสริมค่าคงที่ "abcde" ด้วยช่องว่างห้าช่องทางด้านขวา ซึ่งฟังก์ชันไม่ได้คำนึงถึง เลน, - ในทั้งสองกรณีเราได้ 5
การทำงาน ข้อมูลส่งคืนจำนวนไบต์ในการแทนค่าตัวแปรและแสดงให้เราเห็นถึงความแตกต่างระหว่างประเภท CHAR และ VARCHAR ข้อมูลจะให้ 12 สำหรับ CHAR และ 10 สำหรับ VARCHAR
อย่างที่คาดไว้, ข้อมูลสำหรับตัวแปร VARCHAR จะส่งกลับความยาวจริงของตัวแปร แต่ทำไมผลลัพธ์เป็น 12 สำหรับตัวแปรประเภท CHAR ประเด็นคือ CHAR เป็นประเภทหนึ่ง ความยาวคงที่. หากค่าของตัวแปรน้อยกว่าความยาว และเราประกาศความยาวเป็น CHAR(12) ค่าของตัวแปรจะ "สอดคล้อง" กับความยาวที่ต้องการโดยการเพิ่มช่องว่างต่อท้าย

มีงานในไซต์ที่ต้องสั่งซื้อ (ค้นหาค่าสูงสุด ฯลฯ ) ตามลำดับตัวเลขของค่าที่แสดง รูปแบบข้อความ. ตัวอย่างเช่น หมายเลขที่นั่งบนเครื่องบิน ("2d") หรือความเร็วซีดี ("24x") ปัญหาคือข้อความเรียงแบบนี้ (จากน้อยไปหามาก)

หากจำเป็นต้องจัดสถานที่ตามลำดับแถวจากน้อยไปหามากควรเรียงลำดับดังนี้

ถ้าเราจำกัดตัวเองไว้แค่นี้ เราก็จะได้

มันยังคงเรียงลำดับ



กำลังโหลด...
สูงสุด