SQL のフルネームフィールドからの名、ミドルネーム、姓の解析
概要
このディスカッションは、データ処理における共通の課題を中心にしています。それは、以下を使用して単一のフルネーム フィールドから名、ミドルネーム、姓を抽出することです。 SQL。この記事では、典型的なケースの 90% を処理することを目的とした実用的なソリューションについて説明します。
メソッド
提案されたメソッドには、フルネーム フィールドを分解するネストされた一連のサブクエリが含まれます。個々の部分に分割します。フルネームは「First Middle Last」の形式で、ミドルネームはオプションであることを前提としています。
例
次の SQL 例は、このアプローチを示しています。
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
特殊なケース
特殊な処理欠損値、末尾のスペース、3 つ以上の部分からなる名前などの場合は、結果の精度を高めることができます。
結論
このメソッドは、確実な結果を提供します。 SQL のフルネーム フィールドから名、ミドルネーム、姓を解析するための基盤であり、一般的なケースと特殊なケースの両方に対処します。ソリューションを特定の要件に適応させることで、名前の一致とデータ分析の効率を大幅に向上させることができます。
以上がSQL の単一のフルネーム フィールドから名、ミドルネーム、姓を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

MySQLのテーブル構造とデータをコピーする方法は次のとおりです。1。CreateTableを使用...テーブル構造をコピーするのが好きです。 2。IntersintINTOを使用してください...選択してデータをコピーします。これらの手順を通じて、さまざまなシナリオでデータのバックアップと移行を効率的に実行できます。

MySQLテーブルからデータをランダムに取得することは、RAND()関数を使用して実行できます。 1。基本的な使用法:SelectFromUsers OrderByRand()limit5; 2。高度な使用法:SelectFromUsersWhereId> =(selectfloor(rand()*(selectmax(id)fromusers)))limit5;最適化戦略には、インデックスとページネーションクエリの使用が含まれます。

MySQLテーブルのインデックス最適化戦略には次のものがあります。1。頻繁にクエリ列のインデックスを作成します。 2。共同インデックスを使用して、マルチコラムクエリの効率を改善します。 3.虐待や失敗を避けるために、インデックスを定期的に確認および最適化します。 4.適切なインデックスの種類と列を選択し、インデックスを監視および最適化し、効率的なクエリステートメントを書き込みます。これらの方法により、MySQLクエリのパフォーマンスを大幅に改善できます。

MySQLのデータの更新と削除操作の最適化は、次の手順を通じて達成できます。1。createIndexidx_last_order_dateoncustomers(last_order_date)などのインデックスを使用します。 2.バッチ操作を実行して、ロック時間を短縮します。 3.完全なテーブルスキャンを避け、適切なインデックスと条項を使用します。 4.トランザクションを使用して、パフォーマンスと原子性を向上させます。 5.スロークエリログを監視および最適化し、パフォーマンスボトルネックを識別します。

デフォルトのMySQLポート番号を変更する方法は次のとおりです。1。構成ファイルsudonano/etc/my.cnfを開きます。 2。[mysqld]セクションにport = 3307を追加または変更します。 3。編集者を保存して終了します。 4. MySQLサービスsudosystemctlrestartmysqlを再起動します。これにより、データベースのセキュリティを改善し、ポート競合の問題を解決できます。

MySQLの初期構成パラメーターを調整すると、データベースのパフォーマンスが大幅に向上する可能性があります。 1. innodb_buffer_pool_sizeを4GBに設定すると、INNODBテーブルのディスクI/Oを削減し、クエリのパフォーマンスを改善できます。 2.高い並行性環境では、innodb_thread_concurrencyを0に設定するとパフォーマンスが向上しますが、スレッドの数は慎重に管理する必要があります。

mysqlhandlesconcurrencyusing amixofrow-levelandtable-levellocking、主にthroughnodb'srow-levellocking.comparedtootherrdbms、mysqlのsapproachiseformanyusecasesecasesbutmayfaceChallengeswithdeadlockdlacklikeRisikErisikErikErikErikErikErikErikErikErikErikErikErikErikErikErikeを使用してください

mysqlhandlestransactionsefectivectivelivationtivelivational supportingingacidpropertiessimilArtopostgreslesclandoracle.1)mysqluseSesrepeatable-readededededededededededefaultisolation level


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ホットトピック









