UPDATE mytable SET mycolumn= LTRIM(RTRIM(mycolumn));
工作在修剪去除拖車空間列細各個領域,但我該如何調整它修剪所有列,而無需編寫在表中每列名?因爲我有一個龐大的數據庫。MySQL的:修剪數據庫
UPDATE mytable SET mycolumn= LTRIM(RTRIM(mycolumn));
工作在修剪去除拖車空間列細各個領域,但我該如何調整它修剪所有列,而無需編寫在表中每列名?因爲我有一個龐大的數據庫。MySQL的:修剪數據庫
幾年晚,但可能幫助別人: 此代碼修剪的表「your_table」所有領域。 可以擴展到以同樣的方式將整個數據庫上運行....
SET SESSION group_concat_max_len = 1000000;
select concat('update your_table set ',group_concat(concat('`',COLUMN_NAME, '` = trim(`',COLUMN_NAME,'`)')),';')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'your_table'
into @trimcmd;
prepare s1 from @trimcmd;
execute s1;
DEALLOCATE PREPARE s1;
展開每一列的查詢:
UPDATE mytable
SET mycolumn = LTRIM(RTRIM(mycolumn)),
mycolumn2 = LTRIM(RTRIM(mycolumn2)),
...;
UPDATE mytable SET
mycolumn = LTRIM(RTRIM(mycolumn)),
mycolumn2 = LTRIM(RTRIM(mycolumn2))
等等,等等。
爲什麼不只是TRIM()? – GracefulCode 2016-04-27 16:23:58
@GracefulCode很好的問題...回頭看,這實際上並沒有解決問題的當前狀態,我看起來好像在答案提交後編輯它。 – 2016-04-28 15:29:37
T-SQL沒有'TRIM()'。在這種情況下,'LTRIM(RTRIM(mycolumn))'技巧就可以工作。 – SherylHohman 2017-11-20 04:34:20
由於問題問的整個數據庫,這裏是產生所需的SQL腳本。我跳過自動執行,只要你喜歡就執行它。
-- Set your database name here
SET @my_database:='YOUR_DB_NAME';
SET SESSION group_concat_max_len = 1000000;
SELECT
CONCAT('UPDATE `', @my_database, '`.`', TABLE_NAME,
'` SET ', GROUP_CONCAT(
CONCAT('`', COLUMN_NAME, '` = TRIM(`', COLUMN_NAME, '`)')
ORDER BY ORDINAL_POSITION ASC),
';') AS `query`
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = @my_database
GROUP BY TABLE_NAME
ORDER BY TABLE_NAME ASC;
@ZweiStein謝謝。
您可以使用PHP爲它(爲了避免SQL錯誤,更好的打印查詢然後再執行它們):
$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'database';
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
$db->set_charset("utf8");
$queries = '';
$query="SELECT * from table";
$result = $db->query($query);
$headers = $result->fetch_fields();
foreach($headers as $header) {
$col = $header->name;
$queries .= "UPDATE table SET `".$col."` = TRIM(`".$col."`) </br>";
}
echo $queries;
>
如果沒有太多的列,你可以只是
直接 UPDATE
各自通過your_column_name經由TRIM()
功能:
UPDATE mytable SET
mycolumn1 = TRIM(mycolumn1),
mycolumn2 = TRIM(mycolumn2),
mycolumn3 = TRIM(mycolumn3),
mycolumn4 = TRIM(mycolumn4)
否則,ZweiStein's回答上述單個表,
或Izhar Aazmi's答案爲整個數據庫似乎要走的路。
Hiram's回答另一個SO柱包括檢查只TRIMVARCHAR領域:出色的功能!
或者,如果使用T-SQL,或其他不支持TRIM
,使用LTRIM(RTRIM(...))
伎倆,
通過Jim Rubenstein和Denis de Bernardy上述建議。
小心分享整個數據庫的擴展? – AlasdairC 2016-01-07 13:16:30