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