如何在mysql查询中使用正则表达式删除特定字符?

问题描述 投票:0回答:2

在我的查询中,我使用REPLACE( b.DESCRIPTION,'SP. Z O.O.','') AS DESCRIPTION从列中删除SP. Z O.O.这些字符。希望它对我有用。但在我的数据库SP. Z O.O.中,这些字符以不同的方式存储。像sp. Z.o.oSP. z.o.o等。它在某处用大写字母存储,在某处用小写字母存储。 REPLACE( b.DESCRIPTION,'SP. Z O.O.','') AS DESCRIPTION通过这种方法我只能删除大写字母。我希望所有条件都删除这样的类似单词。如何在这种情况下应用正则表达式或案例?

这是我的查询:

SELECT b.TRANS_DETAILS_ID,b.CREDIT_AMOUNT,b.ENTITY_NAME,REPLACE(b.DESCRIPTION,'SP.Z OO','')作为说明,DATE_FORMAT(a.TRANSACTION_DATE_TIME,'%d-%m-%Y')AS TRANS_DATE FROM bank_book_transaction_master a,bank_book_transaction_details b在'2017-12-01'和'2017-12-26'和DEBIT_CREDIT_FLAG = 1之间a.TRANSACTION_DATE_TIME与a.ORG_ID ='53'和a.BANK_ID ='14'和a。 TRANSACTION_ID = b.TRANS_MASTER_ID

mysql regex case
2个回答
0
投票

您可以使用以下查询执行此操作:

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]>

0
投票

如果您使用的是MariaDB,则可以像下一行一样使用REGEXP_REPLACE():

REGEXP_REPLACE(col, regexp, replace)

Here你会找到有关用法的例子。

© www.soinside.com 2019 - 2024. All rights reserved.