Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在我不知道其长度的子字符串中间使用通配符?_Mysql_Replace - Fatal编程技术网

Mysql 如何在我不知道其长度的子字符串中间使用通配符?

Mysql 如何在我不知道其长度的子字符串中间使用通配符?,mysql,replace,Mysql,Replace,我正在尝试更新数据库,用新字符替换旧字符,我的问题是,在该字符串的中间有一些字符我必须删除,但我不知道长度或类型,我只知道子字符串的开始时间和结束时间,例如exmaple my-string=XXXXXXXX-endstring 所以,我想这样做 new-string-endstring 我知道我的字符串值,但不知道中间的子字符串 XXXXX < /代码> 有什么办法吗 谢谢。如果您使用PHP,您可以执行以下操作: 1) 对列值中包含my string文本的所有行进行SELECT SELE

我正在尝试更新数据库,用新字符替换旧字符,我的问题是,在该字符串的中间有一些字符我必须删除,但我不知道长度或类型,我只知道子字符串的开始时间和结束时间,例如exmaple

my-string=XXXXXXXX-endstring
所以,我想这样做

new-string-endstring

我知道我的字符串值,但不知道中间的子字符串<代码> XXXXX < /代码>

有什么办法吗


谢谢。

如果您使用PHP,您可以执行以下操作:

1) 对列值中包含
my string
文本的所有行进行
SELECT

SELECT*FROM table\u name,其中列的名称类似于“%my string%”

  • %
    用作通配符

2) 循环遍历所有这些结果行,并使用PHP的
str_replace
替换
mystring
中的
new_string
,然后使用MySQL的
UPDATE
更新DB中列的新值您可以使用SUBSTRING\u索引获取所需字符串,并使用CONCAT追加新字符串

Update TableA 
Set columnA = CONCAT( 'newstring' , SUBSTRING_INDEX(columnA, '-', -1) )

更新以
my string-
开头并以
-endstring
结尾的字段:

UPDATE table_name
SET column_name = 'new-string-endstring'
WHERE column_name LIKE 'my-string-%' 
  AND column_name LIKE '%-endstring';

嗨,谢谢,但是我怎么知道我的字符串和结束字符串之间的字符串呢?在示例中:XXXX,我不知道长度,我考虑过使用子字符串,但我不确定如何…如果您想过滤掉已知字符串之间的文本,请查看PHP的
preg_match()
函数。我不是正则表达式方面的专家,所以也许其他人可以在这里提供帮助?但是,例如,您的示例列A中是否有要替换的字符串?我想替换columnA(我知道这个字符串)加上另一个短字符串,它可以是3位、4位或5位数字,直到我找到一个" ... 你知道怎么做吗?@jpganz18,columnA有一个值,就像你提到的XXXXXXXX-endstring。我一直在寻找——从结尾到结束,保留每一件事——并将新闻字符串连接到它。