ในบทความนี้เราจะพูดถึงหลายวิธีในการแยกค่าสตริงที่คั่น สามารถทำได้โดยใช้หลายวิธี ได้แก่
- การใช้ฟังก์ชัน STRING_SPLIT เพื่อแยกสตริง
- สร้างฟังก์ชันมูลค่าตารางที่ผู้ใช้กำหนดเพื่อแยกสตริง
- ใช้ XQuery เพื่อแยกค่าสตริงและแปลงสตริงที่มีตัวคั่นเป็น XML
ก่อนอื่นเราต้องสร้างตารางและแทรกข้อมูลลงไปซึ่งจะใช้ทั้งสามวิธี ตารางควรมีแถวเดียวที่มีรหัสเขตข้อมูลและสตริงที่มีอักขระตัวคั่นอยู่ สร้างตารางชื่อ“ student” โดยใช้รหัสต่อไปนี้
สร้างตารางนักเรียน (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))
แทรกชื่อนักเรียนคั่นด้วยลูกน้ำในแถวเดียวโดยเรียกใช้รหัสต่อไปนี้
INSERT INTO student (student_name) VALUES ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')
การสร้างตารางและการแทรกข้อมูล
ตรวจสอบว่าข้อมูลถูกแทรกลงในตารางหรือไม่โดยใช้รหัสต่อไปนี้
เลือก * จากนักเรียน
ตรวจสอบว่าข้อมูลถูกแทรกลงในตาราง 'นักเรียน' หรือไม่
วิธีที่ 1: ใช้ฟังก์ชัน STRING_SPLIT เพื่อแยกสตริง
ใน SQL Server 2016 “ STRING_SPLIT” มีการแนะนำฟังก์ชันซึ่งสามารถใช้ได้กับความเข้ากันได้ระดับ 130 ขึ้นไป ถ้าคุณใช้ SQL Server เวอร์ชัน 2016 หรือสูงกว่าคุณสามารถใช้ฟังก์ชัน build-in นี้ได้
นอกจากนี้ “ STRING_SPLIT” ป้อนสตริงที่มีสตริงย่อยที่คั่นและป้อนอักขระหนึ่งตัวเพื่อใช้เป็นตัวคั่นหรือตัวคั่น ฟังก์ชันจะแสดงตารางคอลัมน์เดียวซึ่งแถวนั้นมีสตริงย่อย ชื่อของคอลัมน์ผลลัพธ์คือ“ มูลค่า” . ฟังก์ชันนี้ได้รับสองพารามิเตอร์ พารามิเตอร์ตัวแรกคือสตริงและพารามิเตอร์ตัวที่สองคือตัวคั่นหรือตัวคั่นตามที่เราต้องแยกสตริง เอาต์พุตประกอบด้วยตารางคอลัมน์เดียวซึ่งมีสตริงย่อยอยู่ คอลัมน์เอาต์พุตนี้มีชื่อว่า “ มูลค่า” ดังที่เราเห็นในรูปด้านล่าง ยิ่งไปกว่านั้น “ STRING SPLIT” ฟังก์ชัน table_valued ส่งคืนตารางว่างถ้าสตริงอินพุตเป็น NULL
ระดับความเข้ากันได้ของฐานข้อมูล:
แต่ละฐานข้อมูลคือเชื่อมต่อด้วยถึงความเข้ากันได้ระดับ.มันเปิดใช้งานที่ฐานข้อมูลพฤติกรรมถึงเป็นเข้ากันได้กับ thคือโดยเฉพาะSQLเซิร์ฟเวอร์รุ่นมันวิ่งบน.
ตอนนี้เราจะเรียกฟังก์ชัน 'string_split' เพื่อแยกสตริงที่คั่นด้วยเครื่องหมายจุลภาค แต่ระดับความเข้ากันได้น้อยกว่า 130 จึงเกิดข้อผิดพลาดตามมา 'ชื่อวัตถุไม่ถูกต้อง' SPLIT_STRING ''
เกิดข้อผิดพลาดหากระดับความเข้ากันได้ของฐานข้อมูลต่ำกว่า 130“ ชื่อวัตถุไม่ถูกต้อง split_string”
ดังนั้นเราต้องตั้งค่าระดับความเข้ากันได้ของฐานข้อมูลเป็น 130 หรือสูงกว่า ดังนั้นเราจะทำตามขั้นตอนเหล่านี้เพื่อตั้งค่าระดับความเข้ากันได้ของฐานข้อมูล
- ก่อนอื่นตั้งฐานข้อมูลเป็น“ single_user_access_mode” โดยใช้รหัสต่อไปนี้
แก้ไขการตั้งค่าฐานข้อมูล SINGLE_USER
- ประการที่สองเปลี่ยนระดับความเข้ากันได้ของฐานข้อมูลโดยใช้รหัสต่อไปนี้
แก้ไขชุดฐานข้อมูล COMPATIBILITY_LEVEL = 130
- ทำให้ฐานข้อมูลกลับสู่โหมดการเข้าถึงหลายผู้ใช้โดยใช้รหัสต่อไปนี้
แก้ไขการตั้งค่าฐานข้อมูล MULTI_USER
ใช้ [หลัก] เปลี่ยนฐานข้อมูล [bridge_centrality] ตั้งค่า SINGLE_USER แก้ไขฐานข้อมูล [bridge_centrality] ตั้งค่า COMPATIBILITY_LEVEL = 130 แก้ไขฐานข้อมูล [bridge_centrality] ตั้งค่า MULTI_USER GO
ผลลัพธ์จะเป็น:
เปลี่ยนระดับความเข้ากันได้เป็น 130
ตอนนี้เรียกใช้รหัสนี้เพื่อให้ได้ผลลัพธ์ที่ต้องการ
ประกาศ @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' SELECT * จาก STRING_SPLIT (@string_value,