トゥクトゥク:
私は以下のようなデータを持つテーブルを持っています
mysql> mysql> SELECT * FROM STOCK_COMPANIES LIMIT 10;
+--------+--------------------------+------------------------+--------------------------------+-----------------------------+
| Symbol | Company_name | Sector | Sub_industry | Headquarter |
+--------+--------------------------+------------------------+--------------------------------+-----------------------------+
| | Agilent Technologies Inc | Health Care | Health Care Equipment | Santa Clara; California
|American Airlines Group | Industrials | Airlines | Fort Worth; Texas
|Advance Auto Parts | Consumer Discretionary | Automotive Retail | Roanoke; Virginia
| | Apple Inc. | Information Technology | Computer Hardware | Cupertino; California
|V | AbbVie | Health Care | Pharmaceuticals | North Chicago; Illinois
|ABC | AmerisourceBergen Corp | Health Care | Health Care Distributors | Chesterbrook; Pennsylvania
| | Abbott Laboratories | Health Care | Health Care Equipment | North Chicago; Illinois
|centure plc | Information Technology | IT Consulting & Other Services | Dublin; Ireland
| | Adobe Systems Inc | Information Technology | Application Software | San Jose; California
| | Analog Devices; Inc. | Information Technology | Semiconductors | Norwood; Massachusetts
+--------+--------------------------+------------------------+--------------------------------+-----------------------------+
10 rows in set (0.00 sec)
私はのコンテンツ分割したいHeadquarter
ことでは;
、最後の文字列を取得します。私は、以下のコマンドを実行しました
mysql> SELECT Headquarter, SUBSTRING_INDEX(Headquarter, ';', -1) AS STATE FROM STOCK_COMPANIES LIMIT 10;
+-----------------------------+-----------------+
| Headquarter | STATE |
+-----------------------------+-----------------+
| Californialifornia
|| Texass
| | Virginia
| | Californiarnia
|Illinois; Illinois
| PennsylvaniaPennsylvania
|Illinois; Illinois
| | Ireland
| | Californiaia
| | Massachusettstts
+-----------------------------+-----------------+
誰かが、出力が上記のように見ている理由を私に説明できますか?
私はちょうど表示しようとしてもHeadquarter
、それは以下のように探しています
mysql> SELECT Headquarter FROM STOCK_COMPANIES LIMIT 10;
+-----------------------------+
| Headquarter |
+-----------------------------+
|ta Clara; California
|h; Texas
|Virginia
|tino; California
|th Chicago; Illinois
|Chesterbrook; Pennsylvania
|th Chicago; Illinois
|land
|se; California
|ood; Massachusetts
+-----------------------------+
10 rows in set (0.00 sec)
私が使用してMySQLを開始-sN
し、クエリの下に実行しました。それらの両方が期待される出力を与えます
mysql> SELECT Headquarter FROM STOCK_COMPANIES LIMIT 10;
Santa Clara; California
Fort Worth; Texas
Roanoke; Virginia
Cupertino; California
North Chicago; Illinois
Chesterbrook; Pennsylvania
North Chicago; Illinois
Dublin; Ireland
San Jose; California
Norwood; Massachusetts
mysql> SELECT TRIM(SUBSTRING_INDEX(Headquarter, ';', -1)) AS STATE FROM STOCK_COMPANIES LIMIT 10;
California
Texas
Virginia
California
Illinois
Pennsylvania
Illinois
Ireland
California
Massachusetts
私は、クエリの下に実行しようとしている場合しかし、その後、再び、それは私が理解することはできませんよ下記の出力を与えています
mysql> SELECT Headquarter, TRIM(SUBSTRING_INDEX(Headquarter, ';', -1)) AS STATE FROM STOCK_COMPANIES LIMIT 10;
Californiaornia
Texasexas
Virginiaa
Californiania
Illinoisllinois
Pennsylvanialvania
Illinoisllinois
Ireland
Californiaia
Massachusettss
私は印刷することはできませんよ、なぜ誰かが私に説明することができますHeadquarter
し、TRIM(SUBSTRING_INDEX(Headquarter, ';', -1))
一緒に?
の出力 mysql -V
$ mysql -V
mysql Ver 14.14 Distrib 5.6.39, for Linux (x86_64) using EditLine wrapper
THE
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
Barmar:
あなたは、データ内のキャリッジリターン文字を持っています。
私はあなたがデータをそれらをきれいにし、あなたはすべてのクエリでそれらをフィルタリングする必要はありませんので、最初の場所にデータをロードするためにあなたの手順を修正勧め:
UPDATE STOCK_COMPANIES
SET headquarter = REPLACE('\r', '', headquarter);