2013-08-19 27 views
-4

我有一個名爲「用戶名」的表,其中有一個名爲「用戶名」的列。最近,我爲數據庫中的每個用戶名添加了前綴「El_」。現在我想刪除這三個字母。我怎樣才能做到這一點?我需要刪除SQL列中每個字段的前三個字符

+0

請分享你已經找到了我們來幫助你。 –

回答

2

假設MySql你可以做這樣的事情。

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

將更新的每一行不包括el_,但這種假設每一行與El_開始。

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

+0

非常感謝。你能解釋爲什麼Substring 4工作而不是3或2,如在Java中? – user2694824

+0

如果你閱讀了子字符串文檔,你會發現它是你想從哪裏開始的索引。 mysql中的字符串從1開始,所以1是E,2是l,3是_。所以你想從第四個字符開始。 – Doon

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

這將刪除結果中的前三個字符。使用RIGHT需要兩個參數:第一個是您希望顯示的列,第二個是從結果右側開始計算的字符數。

這應該做的!

編輯:如果你真的想從每一個用戶名刪除此前綴良好的使用UPDATE語句如下:

UPDATE MyTable 
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 3) 
-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++; 
} 
+0

這是徹底的答案。當然,有更簡單(更先進)的方法,但我認爲如果你學會了如何首先做到這一點,那麼最好的問題的性質可能是最好的... – NessyString

+0

他沒有說他使用php,並且從數據庫中抽出來做這項工作是對資源的嚴重浪費。數據庫非常擅長處理數據。 – Doon

+0

這是假設他正在使用PHP和MySQL數據庫。接下來,這使用了很多單獨的查詢來運行,而只需要一行SQL就可以完成所有的事情。 –

相關問題