В моем запросе я использую REPLACE( b.DESCRIPTION,'SP. Z OO','') AS DESCRIPTION
для удаления SP. Z OO
SP. Z OO
эти символы из столбцов. И, надеюсь, это работает на меня. Но в моей базе данных SP. Z OO
SP. Z OO
эти символы хранятся по-разному. Как sp. Zoo
sp. Zoo
, SP. zoo
SP. zoo
и т.д. Где-то он хранится заглавными буквами и где-то хранится маленькими буквами. REPLACE( b.DESCRIPTION,'SP. Z OO','') AS DESCRIPTION
этим методом Я могу только удалить заглавные буквы. Я хочу, чтобы все условия удаляли подобные слова. Как применить регулярное выражение или случай в этой ситуации?
Это мой запрос:
SELECT b.TRANS_DETAILS_ID, b.CREDIT_AMOUNT, b.ENTITY_NAME, REPLACE (b.DESCRIPTION, 'SP. Z OO', '') AS DESCRIPTION, DATE_FORMAT (a.TRANSACTION_DATE_TIME, '% d-% m-% Y') AS TRANS_DATE FROM bank_book_transaction_master a, bank_book_transaction_details b WHERE a.TRANSACTION_DATE_TIME BETWEEN '2017-12-01' AND '2017-12-26' AND DEBIT_CREDIT_FLAG = 1 AND a.ORG_ID = '53' AND a.BANK_ID = '14' И a.TRANSACTION_ID = b.TRANS_MASTER_ID
Вы можете сделать это с помощью такого запроса:
UPDATE strtest
SET mystring = CONCAT(
LEFT (mystring, POSITION('SP. Z O.O.' IN mystring)-1),
RIGHT(mystring, LENGTH(mystring)-POSITION('SP. Z O.O.' IN mystring)-9)
)
WHERE mystring LIKE '%SP. Z O.O.%';
Образец:
Таблица испытаний
MariaDB [bernd]> SELECT * from strtest;
+----+------------------+
| id | mystring |
+----+------------------+
| 1 | SP. Z O.O. |
| 2 | ABCSP. Z O.O. |
| 3 | SP. Z O.O.XYZ |
| 4 | QWESP. Z O.O.IOP |
| 5 | AAASp. Z o.O.LLL |
+----+------------------+
5 rows in set (0.00 sec)
Удалите строку в SELECT (>>> <<< только для теста)
MariaDB [bernd]> SELECT CONCAT( '>>>',
-> LEFT (mystring, POSITION('SP. Z O.O.' IN mystring)-1),
-> RIGHT(mystring, LENGTH(mystring)-POSITION('SP. Z O.O.' IN mystring)-9),
-> '<<<') AS resultstring
-> FROM strtest;
+--------------+
| resultstring |
+--------------+
| >>><<< |
| >>>ABC<<< |
| >>>XYZ<<< |
| >>>QWEIOP<<< |
| >>>AAALLL<<< |
+--------------+
5 rows in set (0.00 sec)
ОБНОВИТЬ таблицу
MariaDB [bernd]> UPDATE strtest
-> SET mystring = CONCAT(
-> LEFT (mystring, POSITION('SP. Z O.O.' IN mystring)-1),
-> RIGHT(mystring, LENGTH(mystring)-POSITION('SP. Z O.O.' IN mystring)-9)
-> )
-> WHERE mystring LIKE '%SP. Z O.O.%';
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5 Changed: 5 Warnings: 0
MariaDB [bernd]> SELECT * from strtest;
+----+----------+
| id | mystring |
+----+----------+
| 1 | |
| 2 | ABC |
| 3 | XYZ |
| 4 | QWEIOP |
| 5 | AAALLL |
+----+----------+
5 rows in set (0.00 sec)
MariaDB [bernd]>
Если вы используете MariaDB, вы можете использовать REGEXP_REPLACE(), как в следующей строке:
REGEXP_REPLACE(col, regexp, replace)
Здесь вы найдете примеры об использовании.
.
,