相关疑难解决方法(0)

如何在MySQL中替换正则表达式?

我有一张约500k行的桌子; varchar(255)UTF8列filename包含文件名;

我试图从文件名中删除各种奇怪的字符 - 我以为我会使用一个字符类: [^a-zA-Z0-9()_ .\-]

现在,MySQL中是否有一个函数可以让你通过正则表达式替换?我正在寻找与REPLACE()函数类似的功能 - 简化示例如下:

SELECT REPLACE('stackowerflow', 'ower', 'over');

Output: "stackoverflow"

/* does something like this exist? */
SELECT X_REG_REPLACE('Stackoverflow','/[A-Zf]/','-'); 

Output: "-tackover-low"
Run Code Online (Sandbox Code Playgroud)

我知道REGEXP/RLIKE,但那些只检查是否有匹配,没有什么比赛是.

(我可以SELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]'从PHP脚本做一个" ",做一个preg_replace然后" UPDATE foo ... WHERE pkey_id=...",但这看起来像一个最后的缓慢和丑陋的黑客)

regex mysql mysql-udf

482
推荐指数
11
解决办法
42万
查看次数

将分隔列表存储在数据库列中真的那么糟糕吗?

想象一下带有一组复选框的Web表单(可以选择其中的任何一个或全部).我选择将它们保存在存储在数据库表的一列中的逗号分隔值列表中.

现在,我知道正确的解决方案是创建第二个表并正确地规范化数据库.实现简单的解决方案更快,我想快速获得该应用程序的概念验证,而无需花费太多时间.

我认为节省的时间和更简单的代码在我的情况下是值得的,这是一个可辩护的设计选择,还是我应该从一开始就将其标准化?

更多上下文,这是一个小型内部应用程序,实际上取代了存储在共享文件夹中的Excel文件.我也在问,因为我正在考虑清理程序并使其更易于维护.在那里有一些我并不完全满意的事情,其中​​一个是这个问题的主题.

database database-design database-normalization

346
推荐指数
8
解决办法
6万
查看次数

你如何在MySQL中使用"WITH"子句?

我正在将我的所有SQL Server查询转换为MySQL,并且我的查询WITH都失败了.这是一个例子:

WITH t1 AS
(
     SELECT article.*, userinfo.*, category.*
     FROM question
     INNER JOIN userinfo ON userinfo.user_userid = article.article_ownerid
     INNER JOIN category ON article.article_categoryid = category.catid
     WHERE article.article_isdeleted = 0
)
SELECT t1.*
FROM t1
ORDER BY t1.article_date DESC
LIMIT 1, 3
Run Code Online (Sandbox Code Playgroud)

mysql common-table-expression with-clause subquery-factoring mysql-8.0

100
推荐指数
5
解决办法
19万
查看次数

在MySQL中生成一个整数序列

我需要使用表/结果集/具有整数n到m的任何内容进行连接.有没有一种简单的方法来获得它而不仅仅是建立表格?

(顺便说一句,那种类型的构造会被称为"元查询"?)

mn受限于某种合理的(<1000)

mysql

55
推荐指数
10
解决办法
12万
查看次数

MySQL中GROUP_CONCAT的反义词是什么?

我似乎反对这个问题很多,我的数据格式如下:

+----+----------------------+
| id | colors               |
+----+----------------------+
| 1  | Red,Green,Blue       |
| 2  | Orangered,Periwinkle |
+----+----------------------+
Run Code Online (Sandbox Code Playgroud)

但我希望它的格式如下:

+----+------------+
| id | colors     |
+----+------------+
| 1  | Red        |
| 1  | Green      |
| 1  | Blue       |
| 2  | Orangered  |
| 2  | Periwinkle |
+----+------------+
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?什么是这种操作甚至叫做?

mysql csv format pivot group-concat

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