0

多くの行 (約 1,500) を持つテーブルがあります。列 city_name には、いくつかのセルに都市名があり、(CD) で終わります。(CD) のあるセルを (CD) なしで更新したい。これは私のテーブルのプレビューです:

+---------+-----------------------+---------+
| city_id | city_name             | id_dept |
+---------+-----------------------+---------+
|       1 | El Encanto (CD)       |       1 |
|       2 | La Chorrera (CD)      |       1 |
|       3 | La Pedrera (CD)       |       1 |
|       4 | La Victoria (CD)      |       1 |
|       5 | Leticia               |       1 |
|       6 | Miriti Parana (CD)    |       1 |
|       7 | Puerto Alegria (CD)   |       1 |
|       8 | Puerto Arica (CD)     |       1 |
|       9 | Puerto Nariño         |       1 |
|      10 | Puerto Santander (CD) |       1 |
+---------+-----------------------+---------+
10 rows in set (0.00 sec)

そして、これは私が持ちたいものです:

+---------+-----------------------+---------+
| city_id | city_name             | id_dept |
+---------+-----------------------+---------+
|       1 | El Encanto            |       1 |
|       2 | La Chorrera           |       1 |
|       3 | La Pedrera            |       1 |
|       4 | La Victoria           |       1 |
|       5 | Leticia               |       1 |
|       6 | Miriti Parana         |       1 |
|       7 | Puerto Alegria        |       1 |
|       8 | Puerto Arica          |       1 |
|       9 | Puerto Nariño         |       1 |
|      10 | Puerto Santander      |       1 |
+---------+-----------------------+---------+
10 rows in set (0.00 sec)

以下を使用して(CD)ですべての行を選択できることを理解しています:

SELECT * FROM city WHERE city_name LIKE ( "%(CD)%" )

しかし、どうすれば(CD)を削除できますか:

UPDATE city SET city_name = "" WHERE city_name LIKE( "%(CD)%" )
4

2 に答える 2

1

REPLACE()機能を使用できます

UPDATE city SET city_name = REPLACE(city_name, '(CD)', '') 
WHERE city_name LIKE( "%(CD)%" )
于 2012-09-03T17:50:53.300 に答える
1

常に " (CD)" で終わり、最後を切り落としたい場合は、次のようにします。

UPDATE city
SET city_name = LEFT(city_name, CHAR_LENGTH(city_name) - 5)
WHERE city_name LIKE '% (CD)';
于 2012-09-03T17:52:03.480 に答える