


Menghuraikan Nama Pertama, Tengah dan Akhir daripada Medan Nama Penuh dalam SQL
Pengenalan
Perbincangan ini tertumpu kepada cabaran biasa dalam pemprosesan data: mengekstrak nama Pertama, Tengah dan Akhir daripada medan nama penuh tunggal menggunakan SQL. Artikel ini meneroka penyelesaian praktikal yang bertujuan untuk mengendalikan 90% kes biasa.
Kaedah
Kaedah yang dicadangkan melibatkan siri subkueri bersarang, yang memecahkan medan nama penuh ke bahagian masing-masing. Ia menganggap nama penuh diformatkan sebagai "First Middle Last", dengan nama tengah adalah pilihan.
Contoh
Contoh SQL berikut menunjukkan pendekatan:
SELECT FIRST_NAME.ORIGINAL_INPUT_DATA ,FIRST_NAME.TITLE ,FIRST_NAME.FIRST_NAME ,CASE WHEN 0 = CHARINDEX(' ',FIRST_NAME.REST_OF_NAME) THEN NULL --no more spaces? assume rest is the last name ELSE SUBSTRING( FIRST_NAME.REST_OF_NAME ,1 ,CHARINDEX(' ',FIRST_NAME.REST_OF_NAME)-1 ) END AS MIDDLE_NAME ,SUBSTRING( FIRST_NAME.REST_OF_NAME ,1 + CHARINDEX(' ',FIRST_NAME.REST_OF_NAME) ,LEN(FIRST_NAME.REST_OF_NAME) ) AS LAST_NAME FROM ( SELECT TITLE.TITLE ,CASE WHEN 0 = CHARINDEX(' ',TITLE.REST_OF_NAME) THEN TITLE.REST_OF_NAME --No space? return the whole thing ELSE SUBSTRING( TITLE.REST_OF_NAME ,1 ,CHARINDEX(' ',TITLE.REST_OF_NAME)-1 ) END AS FIRST_NAME ,CASE WHEN 0 = CHARINDEX(' ',TITLE.REST_OF_NAME) THEN NULL --no spaces @ all? then 1st name is all we have ELSE SUBSTRING( TITLE.REST_OF_NAME ,CHARINDEX(' ',TITLE.REST_OF_NAME)+1 ,LEN(TITLE.REST_OF_NAME) ) END AS REST_OF_NAME ,TITLE.ORIGINAL_INPUT_DATA FROM ( SELECT --if the first three characters are in this list, --then pull it as a "title". otherwise return NULL for title. CASE WHEN SUBSTRING(TEST_DATA.FULL_NAME,1,3) IN ('MR ','MS ','DR ','MRS') THEN LTRIM(RTRIM(SUBSTRING(TEST_DATA.FULL_NAME,1,3))) ELSE NULL END AS TITLE --if you change the list, don't forget to change it here, too. --so much for the DRY prinicple... ,CASE WHEN SUBSTRING(TEST_DATA.FULL_NAME,1,3) IN ('MR ','MS ','DR ','MRS') THEN LTRIM(RTRIM(SUBSTRING(TEST_DATA.FULL_NAME,4,LEN(TEST_DATA.FULL_NAME)))) ELSE LTRIM(RTRIM(TEST_DATA.FULL_NAME)) END AS REST_OF_NAME ,TEST_DATA.ORIGINAL_INPUT_DATA FROM ( SELECT --trim leading & trailing spaces before trying to process --disallow extra spaces *within* the name REPLACE(REPLACE(LTRIM(RTRIM(FULL_NAME)),' ',' '),' ',' ') AS FULL_NAME ,FULL_NAME AS ORIGINAL_INPUT_DATA FROM ( --if you use this, then replace the following --block with your actual table SELECT 'GEORGE W BUSH' AS FULL_NAME UNION SELECT 'SUSAN B ANTHONY' AS FULL_NAME UNION SELECT 'ALEXANDER HAMILTON' AS FULL_NAME UNION SELECT 'OSAMA BIN LADEN JR' AS FULL_NAME UNION SELECT 'MARTIN J VAN BUREN SENIOR III' AS FULL_NAME UNION SELECT 'TOMMY' AS FULL_NAME UNION SELECT 'BILLY' AS FULL_NAME UNION SELECT NULL AS FULL_NAME UNION SELECT ' ' AS FULL_NAME UNION SELECT ' JOHN JACOB SMITH' AS FULL_NAME UNION SELECT ' DR SANJAY GUPTA' AS FULL_NAME UNION SELECT 'DR JOHN S HOPKINS' AS FULL_NAME UNION SELECT ' MRS SUSAN ADAMS' AS FULL_NAME UNION SELECT ' MS AUGUSTA ADA KING ' AS FULL_NAME ) RAW_DATA ) TEST_DATA ) TITLE ) FIRST_NAME
Kes Khas
Mengendalikan khas kes, seperti nilai yang hilang, ruang belakang dan nama dengan lebih daripada tiga bahagian, boleh meningkatkan ketepatan keputusan.
Kesimpulan
Kaedah ini memberikan ketepatan asas untuk menghuraikan Nama Pertama, Tengah dan Akhir daripada medan nama penuh dalam SQL, menangani kedua-dua kes biasa dan khas. Dengan menyesuaikan penyelesaian kepada keperluan khusus, anda boleh mencapai peningkatan yang ketara dalam padanan nama dan kecekapan analisis data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Nama Pertama, Tengah dan Akhir daripada Medan Nama Penuh Tunggal dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

MySQL memproses replikasi data melalui tiga mod: replikasi asynchronous, semi-sinkron dan kumpulan. 1) Prestasi replikasi tak segerak tinggi tetapi data mungkin hilang. 2) Replikasi semi-sinkron meningkatkan keselamatan data tetapi meningkatkan latensi. 3) Replikasi kumpulan menyokong replikasi multi-tuan dan failover, sesuai untuk keperluan ketersediaan yang tinggi.

Kenyataan Jelaskan boleh digunakan untuk menganalisis dan meningkatkan prestasi pertanyaan SQL. 1. Jalankan pernyataan Jelaskan untuk melihat pelan pertanyaan. 2. Menganalisis hasil output, perhatikan jenis akses, penggunaan indeks dan sertai pesanan. 3. Membuat atau menyesuaikan indeks berdasarkan hasil analisis, mengoptimumkan operasi gabungan, dan elakkan pengimbasan jadual penuh untuk meningkatkan kecekapan pertanyaan.

Menggunakan mysqldump untuk sandaran logik dan mysqlenterpriseBackup untuk sandaran panas adalah cara yang berkesan untuk membuat sandaran pangkalan data MySQL. 1. Gunakan mysqldump untuk menyokong pangkalan data: mysqldump-usoot-pmydatabase> mydatabase_backup.sql. 2. Gunakan mysqlenterpriseBackup untuk sandaran panas: mysqlbackup-user = root-password = password-backup-dir =/to/to/backupbackup. Semasa pulih, gunakan kehidupan yang sepadan

Sebab utama pertanyaan MySQL yang perlahan termasuk penggunaan indeks yang hilang atau tidak wajar, kerumitan pertanyaan, jumlah data yang berlebihan dan sumber perkakasan yang tidak mencukupi. Cadangan pengoptimuman termasuk: 1. Buat indeks yang sesuai; 2. Mengoptimumkan pernyataan pertanyaan; 3. Gunakan teknologi pembahagian meja; 4. Meningkatkan perkakasan dengan sewajarnya.

Pandangan MySQL adalah jadual maya berdasarkan hasil pertanyaan SQL dan tidak menyimpan data. 1) Pandangan memudahkan pertanyaan kompleks, 2) meningkatkan keselamatan data, dan 3) mengekalkan konsistensi data. Pandangan disimpan pertanyaan dalam pangkalan data yang boleh digunakan seperti jadual, tetapi data dihasilkan secara dinamik.

Mysqldiffersfromothersqldialectsyntaxforlimit, auto-increment, stringcomparison, subqueries, andperformanceanalysis.1) mySqlusSlimit, whilesqlserverestopandoracleusesusesrownum.2)

Pemisahan MySQL meningkatkan prestasi dan memudahkan penyelenggaraan. 1) Bahagikan jadual besar ke dalam kepingan kecil dengan kriteria tertentu (seperti julat tarikh), 2) secara fizikal membahagikan data ke dalam fail bebas, 3) MystQL boleh memberi tumpuan kepada partisi yang berkaitan apabila pertanyaan, 4) Pengoptimal pertanyaan boleh melangkau partisi yang tidak berkaitan, 5) Memilih strategi partisi yang tepat dan mengekalkannya secara tetap adalah kunci.

Bagaimana untuk memberikan dan membatalkan keizinan di MySQL? 1. Gunakan pernyataan geran untuk memberikan kebenaran, seperti GrantallPrivileGeSondatabase_name.to'username'@'host '; 2. Gunakan pernyataan membatalkan untuk membatalkan kebenaran, seperti RevokeAllPrivileGeSondatabase_name.from'username'@'host 'untuk memastikan komunikasi tepat pada masanya perubahan kebenaran.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
