如何在mysql中删除hiphen之外的空格?
我从mysql数据库中获取图像名称。我的图片包含两到三个扩展名为png的单词。此外,名称还包含hiphen符号。首先,我想删除 hiphen符号左右两侧的空格。其次,我想用下划线符号替换两个单词之间的空格。我如何编写此查询 第二个: 更新表\u name set colname=replace(colname,,“”) 请帮我查询第一个任务。。。如何在mysql中删除hiphen之外的空格?,mysql,Mysql,我从mysql数据库中获取图像名称。我的图片包含两到三个扩展名为png的单词。此外,名称还包含hiphen符号。首先,我想删除 hiphen符号左右两侧的空格。其次,我想用下划线符号替换两个单词之间的空格。我如何编写此查询 第二个: 更新表\u name set colname=replace(colname,,“”) 请帮我查询第一个任务。。。 提前感谢听起来您可以使用一些替换 SELECT REPLACE( REPLACE( REPLACE( name
提前感谢听起来您可以使用一些
替换
SELECT
REPLACE(
REPLACE(
REPLACE(
name,
' -',
'-'
),
'- ',
'-'
),
' ',
'_'
) as new_name
这听起来像是在使用字符串来保存结构化数据,这并不是像MySQL这样的关系数据库管理系统的有效使用:您最好改变模式,使每个离散数据单元都位于自己的列中(然后在从数据库检索数据时可以重新生成所需的字符串) 但是,在回答您的具体问题时,并不清楚您到底想要什么:
- 如果您希望在多个连字符的任意一侧最多删除一个空格,则是适合您的
- 如果要在多个连字符的任意一侧删除一个空格,则可以稍微简化相同的答案:
REPLACE(REPLACE(colname, ' - ', '-'), ' ', '_')
- 如果要删除单个连字符两侧的多个空格,最好使用MySQL函数拆分字符串,然后修剪结果:
REPLACE(CONCAT( RTRIM(SUBSTRING_INDEX(colname, '-', 1)), '-', LTRIM(SUBSTRING_INDEX(colname, '-', -1)) ), ' ', '_')
- 如果要删除多个连字符两侧的多个空格,则需要创建一个在字符串上循环的函数:
然后,您可以这样使用此功能:DELIMITER ;; CREATE FUNCTION trim_delim ( IN input TEXT , IN delim CHAR(1) ) RETURNS TEXT DETERMINISTIC BEGIN DECLARE i INT DEFAULT 1 ; DECLARE result TEXT; WHILE CHAR_LENGTH(input) > 0 AND cur_position > 0 DO SET i := INSTR(input, delim); SET result := CONCAT( IF(CHAR_LENGTH(result) > 0, CONCAT(result, delim), ''), IF(i, RTRIM(LEFT(input, i - 1)), input) ); SET input := LTRIM(SUBSTRING(input, i + 1)); END WHILE; RETURN result; END;; DELIMITER ;
REPLACE(trim_delim(colname, '-'), ' ', '_')