我有一個查詢刪除所有特殊字符。
但是在電子郵件字符串的末尾有一個空格阻止該查詢。刪除不間斷空間?
例子:'[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處理特殊字符。我想UPDATE
每個電子郵件直接與SET
和replace
,trim()
功能。
但是,一些空白不會被刪除,我不知道爲什麼。
我的表格大約有12百萬行。我編寫了一個CRON,讓他們刪除所有特殊字符(不幸的是,因爲過去我們沒有在INSERT
上檢查它們)。
所以我建立了這個查詢來處理我的12MM行。除了正確的空白(有時它有時不會被刪除),它的工作非常好。我想補充一點,在Workbench上,查詢始終工作100%。它沒有任何意義。
這是我再次查詢沒有反斜線和我where 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 IDS。
我認爲正確的空格這是一個非換空間,但我與我的查詢CHAR(160)
最後一次測試沒有工作。
爲什麼不使用專門爲此任務構建的函數,無論您使用何種語言創建查詢? IE瀏覽器。在PHP中有[trim](http://www.php.net/manual/en/function.trim.php)。 – tenub
你的母語是什麼? PHP?不知道爲什麼你會努力做出醜陋的嵌套SQL語句,當你可以在php中使用像'preg_replace'這樣的事情一次完成。 – brandonscript
@tenub雖然在替換嵌套中間有三個修剪。 – Jerry