Apabila berurusan dengan nilai rentetan kompleks dalam jadual, keperluan sering timbul untuk mengekstrak maklumat tertentu. Ini boleh dicapai dengan menggunakan pembatas untuk mentakrifkan struktur rentetan.
Satu senario sedemikian ditunjukkan oleh jadual dengan lajur yang mengandungi rentetan seperti:
Col3 = 'Clent ID = 4356hy|Client Name = B B BOB|Client Phone = 667-444-2626|Client Fax = 666-666-0151|Info = INF8888877 -MAC333330554/444400800'
Di sini, kita ada pembatas khusus yang memisahkan pasangan nilai kunci: '|' untuk menggambarkan lajur dan '= ' (termasuk ruang) untuk memisahkan kunci dan nilai. Objektifnya ialah untuk mengekstrak nilai 'Nama Pelanggan', dalam kes ini 'B B BOB'.
Untuk mencapai matlamat ini, gabungan fungsi manipulasi rentetan dan pernyataan bersyarat boleh digunakan. Satu pendekatan melibatkan penggunaan fungsi CHARINDEX atau PATINDEX untuk mencari kedudukan nilai yang dikehendaki dalam rentetan.
SELECT col1, col2, LTRIM(RTRIM(SUBSTRING( STUFF(col3, CHARINDEX('|', col3, PATINDEX('%|Client Name =%', col3) + 14), 1000, ''), PATINDEX('%|Client Name =%', col3) + 14, 1000))) FROM Table01
Dalam pertanyaan ini, PATINDEX digunakan untuk mencari kedudukan permulaan 'Nama Pelanggan =', diikuti dengan menambah 14 untuk melangkau bahagian ini. Kemudian, CHARINDEX digunakan untuk mencari kedudukan '|' seterusnya. Akhir sekali, fungsi SUBSTRING mengekstrak nilai yang diingini antara kedudukan ini dan LTRIM dan RTRIM digunakan untuk memangkas mana-mana ruang hadapan atau belakang.
Perlu diperhatikan bahawa fungsi khusus yang digunakan untuk tugasan ini mungkin berbeza-beza bergantung pada kerumitan daripada rentetan dan hasil yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Nilai Khusus daripada Rentetan Terhad dalam Transact-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!