比如我现在有表 person,其中的一个字段是 name,
name中有些是“张三”,但是有些是“张 三”。
我现在在电脑上有工具 Navicat Lite,怎么样写语句将所有空格删掉啊?
比如我现在有表 person,其中的一个字段是 name,
name中有些是“张三”,但是有些是“张 三”。
我现在在电脑上有工具 Navicat Lite,怎么样写语句将所有空格删掉啊?
虽然你说的这个软件我没用过= =
但是!!!用Java或Android代码来解决这个问题也是十分简单的ovo
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:test.db");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery( "SELECT id,name FROM person;" );
while ( rs.next() ) {
String id = rs.getString("id");
String name = rs.getString("name");
System.out.println(name);
name = name.replaceAll(" ","");
String sql = "UPDATE person name = " + name + " WHERE id = "+ id +"";
stmt.executeUpdate(sql);
}
rs.close();
stmt.close();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
System.exit(0);
}
System.out.println("successfully");
}
没有想到有怎样的sql语句能完成你这样的工作了,我想最终数据库还是得去判断你的name是否存在空格符并进行update,所以select所有条目出来对name进行trim()操作再update回去不失为数据库操作最容易实现(虽然粗暴了点)的办法了,update回去时采用事物操作,避免原子读写,几十万条数据,我觉得能控制在10s内,做一个后台任务,我觉得是能接受的。另一种方案,不修改改原有name数据,使用select出来后再对name进行trim(),再使用,不也能达到你的目的吗?还能保持原有数据的原始性。
2 回答1.4k 阅读✓ 已解决
2 回答1.8k 阅读
1 回答2.1k 阅读
1 回答1.2k 阅读
1 回答1.4k 阅读
1 回答644 阅读✓ 已解决
1.3k 阅读
请执行以下SQL语句