问题描述
|
我需要一个MySQL查询(如果需要PHP,您也可以使用它),它将删除名为\'url \'的一列上所有值的结尾。
问题是我保存了具有“ 0”的网址,现在我想从数据库中的所有值中删除该结尾。
例:
旧值:
my_url.php
my_sadas.php
新值:
my_url
my_sadas
解决方法
UPDATE mytable
SET myfield = SUBSTRING(myfield,1,LENGTH(myfield)-4) ;
如果还要在截断之前检查字段是否以ѭ4结尾,则可以添加以下条件:
UPDATE mytable
SET myfield = SUBSTRING(myfield,LENGTH(myfield)-4)
WHERE RIGHT(myfield,4) = \'.php\' ;
哦还有LEFT()
也可以代替SUBSTRING()
并且应使用CHAR_LENGTH()
代替of9ѭ,因为它是多字节安全的(而LENGTH()
则不是):
UPDATE mytable
SET myfield = LEFT(myfield,CHAR_LENGTH(myfield)-4)
WHERE RIGHT(myfield,4) = \'.php\' ;
,UPDATE files
SET fileName = SUBSTRING(fileName,(LENGTH(fileName) - 4)) ;
,对于可能具有双字节字符的情况,可能需要使用CHAR_LENGTH
而不是LENGTH
和LEFT
而不是SUBSTRING
。
希望仅将字符为“ 0”的字符(即“ 18”或“ 19”子句)一起删除。
UPDATE table SET field = CASE WHEN INSTR(field,\'.php\') > 0 THEN LEFT(field,INSTR(field,\'.php\')) ELSE field END
要么
UPDATE table SET field = LEFT(field,\'.php\')) WHERE INSTR(field,\'.php\') > 0
,SUBSTRING_INDEX在这种情况下更易于使用。
UPDATE mytable
SET
mytable.url = SUBSTRING_INDEX(mytable.url,\'.php\',1)
WHERE
mytable.url LIKE \"%.php\"