我需要删除SQL列中每个字段的前三个字符

时间:2013-08-19 00:45:45

标签: sql

我有一个名为“users”的表,其中有一个名为“username”的列。最近,我在数据库中的每个用户名中添加了前缀“El_”。现在我想删除前三个字母。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

假设MySql你可以做这样的事情。

update users set username=substring(username,4);

将更新每一行不包含el_,但这假定每行都以El_开头。

sqlfiddle - http://sqlfiddle.com/#!2/3bcf6/1/0

答案 1 :(得分:0)

SELECT RIGHT(MyColumn, LEN(MyColumn) - 3) AS MyTrimmedColumn

这会从结果中删除前三个字符。使用RIGHT需要两个参数:第一个是您希望显示的列,第二个是从结果右侧开始计算的字符数。

这应该做!

编辑:如果你真的想从每个用户名中删除这个前缀,那么请使用UPDATE语句,如下所示:

UPDATE MyTable
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 3)

答案 2 :(得分:-1)

这应该有效

mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname) or die(mysql_error());

$query = "SELECT username, id FROM users";
$result = mysql_query($query) or die(mysql_error());

$count = mysql_numrows($result);
$i = 0;

while($i < $count){
$username = (mysql_result($result, $i, "username"));
$id = (mysql_result($result, $i, "id"));
$username = substr($username, 3);

$con=mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
mysqli_query($con,"UPDATE users SET username = $username WHERE id = $id);
mysqli_close($con);
i++;
}