天天看點

mysql 删除連續空格_mysql – 删除不間斷的空格?

我有一個查詢删除所有特殊字元.

但是,一個空格在電子郵件字元串末尾抵制該查詢.

示例:’[email protected]’

UPDATE my_table SET email= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TRIM(LTRIM(RTRIM(email))),\'\x0B\',\'\'),\'\0\',\'\'),\'\t\',\'\'),\'\r\',\'\'),\'\n\',\'\'),\'\r\n\',\'\'),\'\n\r\',\'\'),\' \',\'\'),CHAR(160),\'\') WHERE id=X

為什麼?

我使用這個語句是因為我有一個WHERE id IN(),是以我不想在PHP中處理特殊字元.我想直接使用SET和replace,trim()函數更新每封電子郵件.

但是,有些空格不會被删除,我不知道為什麼.

我的表有大約1,200萬行.我編寫了一個CRON來擷取它們以删除所有特殊字元(不幸的是因為在過去我們沒有在INSERT上檢查它們).

是以我建構了這個查詢來處理我的12 MM行.除了正确的空白外,它的工作效果非常好(有時它有時不被删除).我想在Workbench上添加它,查詢始終100%工作.它沒有任何意義.

這是我的查詢再次沒有反斜杠和我的IN IN:

UPDATE NEWSLETTER_SUBSCRIPTION SET email= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TRIM(LTRIM(RTRIM(email))),'\x0B',''),'\0',''),'\t',''),'\r',''),'\n',''),'\r\n',''),'\n\r',''),' ',''),CHAR(160),'') WHERE id IN (' . implode(',', $idEmailToBeProcess) . ')

$idEmailToBeProcess包含大約500個ID.

我認為正确的空格是一個不間斷的空間,但我在查詢中使用CHAR(160)的最後一次測試不起作用.