相关疑难解决方法(0)

有没有相当于PHP的preg_replace的MySQL?

我有一个匹配MySQL中的字段,我认为我可以使用正则表达式,但似乎MySQL没有我需要的功能.这是场景:

我在PHP中有一个名为$ url的变量.假设此变量设置为字符串"/ article/my-article/page/2".我还有一个MySQL表格,我想从中提取内容.但是,存储在我的表中的URL包括通配符.

以前,我进行了此设置,以便存储在表中的值如下所示:"/ article /%/ page /%".

使用该配置,我可以运行:

SELECT * FROM urls WHERE '$url' LIKE url
Run Code Online (Sandbox Code Playgroud)

这将匹配,这是所需的功能.

我现在要做的是允许更高级的通配符,这样我的MySQL数据可以是"/ article/{{slug}}/page/{{而不是"/ article /%/ page /%". page_no}}".

我想使用相同的$ url输入创建一个匹配此数据的SQL查询.LIKE不再是正确的比较,因为我没有使用内置的"%"通配符,而是使用{{.*}}.任何想法如何实现这一目标?

php regex mysql replace preg-replace

12
推荐指数
3
解决办法
4万
查看次数

如何从MySQL表的多个列中获取指定最小长度的所有不同单词?

在MySQL 5.6数据库,我有表tablename已经(包括人)三TEXT列:col_a, col_b, col_c

我想从这三列中提取至少5个字符的所有唯一单词(单词之间用空格分隔)。“单词”是指任何非空格字符字符串,例如“ foo-123”和“ 099423”都是单词。这些列都是utf8格式的InnoDB列。

是否有单个查询可以执行此操作?

编辑:根据要求,下面是一个示例:(在实际数据中,col_a,col_b和col_c是TEXT字段,可能包含大量单词。)

select id, col_a, col_b, col_c from tablename;

id  | col_a              | col_b          | col_c
----|--------------------|----------------|----------------------
1   | apple orange plum  | red green blue | bill dave sue
2   | orange plum banana | yellow red     | frank james
3   | kiwi fruit apple   | green pink     | bill sarah-jane frank

expected_result: ["apple", "orange", "banana", "fruit", 
                  "green", "yellow", "frank", "james", "sarah-jane"]
Run Code Online (Sandbox Code Playgroud)

我不在乎结果的顺序。谢谢!

编辑:在上面的示例中,所有内容都是小写字母,因为这就是我将所有内容存储在与该问题相关的真实表中的方式。但是,为了争辩,如果它确实包含一些大写字母,我希望查询忽略大写字母(这是我的数据库配置的设置)。

EDIT2:如果有帮助,则所有文本列上均具有FULLTEXT索引。

EDIT3:这是创建示例数据的SQL: …

regex mysql sql text

12
推荐指数
1
解决办法
328
查看次数

使用regexp进行mysql更新

我想从我的表中删除一些东西1) 32) 121) 1000)......格式为number+)

我试过这段代码.

UPDATE articles SET 
title= REPLACE(title,'\d)', '' ) 
WHERE title regexp "\d)*"
Run Code Online (Sandbox Code Playgroud)

什么都没发生phpmyadmin,怎么写正确?谢谢.

regex mysql

10
推荐指数
1
解决办法
3万
查看次数

sql查询将新行字符转换为html <br>

我有一个文章的mysql数据库,这些文章被输入到没有格式化的textarea中,它们只使用换行符来换行符

\n
Run Code Online (Sandbox Code Playgroud)

我需要将所有这些转换为html br标签

<br />
Run Code Online (Sandbox Code Playgroud)

你可以帮我写一个查询,我可以在phpmyadmin中运行,这样做吗?

表的名称是

exp_channel_data
Run Code Online (Sandbox Code Playgroud)

作为奖金问题......

是否有我可以运行的查询将从p和span标签的中间删除所有内容

我想摆脱这些东西

<p class="MsoNormal" style="MARGIN: 0in 0in 0pt">
<span face="Times New Roman">
Run Code Online (Sandbox Code Playgroud)

并最终得到这个

<p>
<span>
Run Code Online (Sandbox Code Playgroud)

html mysql expressionengine

7
推荐指数
2
解决办法
3万
查看次数

MySQL正则表达式搜索和替换

我想从我的数据库中的所有图像中删除height属性.他们的加价如下:

<img src="path/img.jpg" width="x" height="y" />
Run Code Online (Sandbox Code Playgroud)

我打算做这样的事情:

UPDATE jos_content SET introtext = REPLACE(introtext, 'height=".*"', '');
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在MySQL查询中使用正则表达式.我确实发现它们存在,我只是不知道如何在这种情况下使用它们.

regex mysql replace

6
推荐指数
1
解决办法
2万
查看次数

从存储在MySQL数据库中的json字符串中删除键:值

我在表中有一列以格式存储:

{"field1":"val1","field2":"val4"}
{"field1":"val2","field2":"val5"}
{"field1":"val3","field2":"val6"}
Run Code Online (Sandbox Code Playgroud)

我需要删除所有field1的值(例如"field1":"val1","field1":"val2","field1":"val3"),结果应该是

{"field2":"val4"}
{"field2":"val5"}
{"field2":"val6"}
Run Code Online (Sandbox Code Playgroud)

我试图通过替换实现这个,但卡在'"field1"中:"val1"'字符串val1可以是任何值,如null,某个整数.

UPDATE emp SET col = REPLACE(col, '"field1":"val1"', '')
Run Code Online (Sandbox Code Playgroud)

由于val1的动态值,我陷入困境.

mysql sql mysql-json

6
推荐指数
1
解决办法
3951
查看次数

使用 sql 更改 wordpress 图像目录

我已经更改了我的 wordpress 默认上传目录:

mysite.com/files/year/month/upload

mysite.com/images/upload

我有点难倒正确的SQL语法来代替/files/year/month//images/

使用 phpmyadmin,我选择了正确的数据库,选择了正确的表,并使用此 sql 搜索/找到了需要更改的内容:

SELECT * 
FROM  `wp_postmeta` 
WHERE  `meta_value` 
LIKE  '%/files/%/%/%'
Run Code Online (Sandbox Code Playgroud)

现在我需要从 wp_postmeta WHERE meta_value LIKE %/files/%/%/ WITH /images/ 替换所有内容

sql wordpress

5
推荐指数
1
解决办法
3016
查看次数

在 MariaDB 中使用 REGEXP_REPLACE 进行正则表达式查找和替换的正确语法是什么?

我需要对messageMySQL 表中命名的列运行正则表达式查找和替换post

我的数据库正在运行 MariaDB 10。

根据docs,MariaDB 10 有一个新REGEXP_REPLACE函数专门用于执行此操作,但我似乎无法弄清楚实际的语法。

它将影响 280,000 行,因此理想情况下,还有一种方法可以将其限制为在我测试时一次仅更改一个特定行,或者只是执行 aSELECT而不是 anUPDATE直到我确定它可以满足我的要求。

我想运行的正则表达式: \[quote\sauthor=(.+)\slink=[^\]]+]

替换字符串: [quote="$1"]

以下是我尝试过的,但它只是抛出一个 SQL 错误:

UPDATE post SET message = REGEXP_REPLACE(message, '\[quote\sauthor=(.+)\slink=[^\]]+]', '[quote="$1"]') WHERE post_id = 12

在这种情况下,原始消息是: [quote author=Jon_doe link=board=2;threadid=125;start=40#msg1206 date=1065088]最终结果应该是[quote="Jon_doe"]

使这项REGEXP_REPLACE工作的正确语法是什么?

regex mysql pcre mariadb

5
推荐指数
1
解决办法
2961
查看次数

如何在MySQL中删除部分字符串?

在MySQL中,我有一个文本列,其中包含"bla bla bla YYY = 76767 bla bla bla".

我需要减少76767的数量.

我怎么能在SQL中做到这一点?

mysql sql select

3
推荐指数
1
解决办法
1万
查看次数

选择字符串直到字符串中的第一个或第二个空格

我有包含在每行数据中的表列,如下所示:

|                 Simbols              |
|--------------------------------------|
|H412 Text text                        |
|H413 Text text text text              |
|EUH 001 Text text text text text text |
|EUH 006 text text                     |
|EUH 201/201A Text text. Text text     |
Run Code Online (Sandbox Code Playgroud)

我需要从这些数据中获取这样的数据:

|Simbols     |
|------------|
|H412        |
|H413        |
|EUH 001     |
|EUH 006     |
|EUH 201/201A|
Run Code Online (Sandbox Code Playgroud)

我尝试使用 SUBSTRING 和 CHARINDEX 但它直到最后都不起作用......它只需要第一个空格或类似的东西......查询:

SELECT 
CASE 
    WHEN SUBSTRING(Simbols, 1, CHARINDEX(' ', Simbols)) = ''
    THEN Simbols + ' '
    ELSE SUBSTRING(Simbols, 1, CHARINDEX(' ', Simbols))
END 'Simbols' …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-server

1
推荐指数
1
解决办法
2万
查看次数

清除mySql中的电话号码字段

在不是数据库的人,但是:我在我继承的mySql数据库中混淆了数据.

某些电话号码被格式化 (512) 555-1212 (称之为脏)其他 5125551212 (称之为干净)

我需要一个sqlstamet说

UPDATE table_name
SET Phone="clean'(Some sort of cleaning code  -  regex?)
WHERE Phone='Dirty'
Run Code Online (Sandbox Code Playgroud)

mysql

0
推荐指数
1
解决办法
2440
查看次数