mysql - MySQL - 基于行替换字符串的一部分
问题描述
所以我有一张桌子。为了简化,我会说它有name
和category
列。
一些例子:
name category
Juice: Apple 3
Beer: Miller 4
Cat Food 9
Juice 0
Beer: Molson 4
Juice: Orange 3
Dog Food 9
Beer 0
我想做的是格式化一个可以找到 all 的查询,category = 0
然后从其他结果中删除那些后跟冒号的名称(如果它们包含它们)。见下文:
name category
Apple 3 <- Instead of Juice: Apple
Miller 4 <- Instead of Beer: Miller
Cat Food 9
Juice 0
Molson 4 <- Instead of Beer: Molson
Orange 3 <- Instead of Juice: Orange
Dog Food 9
Beer 0
这可能吗?
谢谢!
编辑:我发现以下工作 - 这是一个坏方法吗?
SELECT
category,
REGEXP_REPLACE(
name,
CONCAT( '(', ( SELECT GROUP_CONCAT( name SEPARATOR '|' ) FROM items WHERE category = 0 ), '): ' ),
''
) AS name
FROM
tablename;
解决方案
如果我没有误解,这样的事情不会起作用吗?
SELECT
SUBSTRING_INDEX(tablename.name, ': ', -1) as name,
`tablename`.`category`
FROM
`tablename`
推荐阅读
- java-8 - 使用函数式编程对列表中的服务器对象进行流和过滤
- list - 当我尝试将字符列表转换为整数列表时,值会发生变化。我该如何解决?
- c# - ASP.NET 无法从 smtp 发送电子邮件
- node.js - 有没有办法隐藏 node.js 代码
- asynchronous - 是否可以实现异步 Outlook 插件 FormRegionShowing 事件处理程序?
- android - MpChartlibrary 背景颜色变化
- php - PHP 和 Carbon:如何获得不同年份的相对时间
- python - 格式化日期时间熊猫
- python-3.x - Django Channels:从通道层发送的数据包未传递
- c# - 数据表编辑器 - Field.Options.Where 语法