gpt4 book ai didi

mysql - 从 mysql select 语句的结果中删除字母字符

转载 作者:行者123 更新时间:2023-11-29 02:50:50 26 4
gpt4 key购买 nike

当我做选择时我确实有输出

select * from testing

123varc
123@etets
123@ppp.c
470rt!dd
45sd3
tt123rc
123@ppp.c
470rt!dd
45sd3
tt123rc

如何在 mysql 中编写查询,以便它删除所有字母字符并显示结果。

我的意思是说结果会如期而至

 123    
123
123
470
453
123
123
470
453
123

非常感谢SKP

最佳答案

没有单一的 MySQL 内置函数可以完成该字符串操作。

看起来您要删除的不仅仅是“字母”字符;还有一个 @ 字符也被删除了。它提出了一个问题,您想如何处理可能出现在字符串中的其他字符,例如空格、制表符、分号、句号和一大堆其他字符。我们无法从问题中分辨出来。

但看起来您真正想要的只是“保留”数字字符,09

为了保持 SQL 简单(隐藏复杂性),我们可以编写一个 MySQL 函数(存储程序)返回一个字符串。然后在 SQL 中引用该函数。

这有几个缺点。另一个数据库对象,使用该函数的 SQL 不可移植到另一个数据库(也没有实现该函数)。

但是无论您以何种方式进行切片,执行此操作的原生 SQL 都不是很好。

如果字符串中的最大字符数受到限制,如十个字符(示例数据中最长的字符串)。我会将字符串分成十个单独的字符,然后查看每个字符是否是我们要返回的字符。

作为第一步,将字符串分割成单独的字符并将它们连接起来:

 SELECT CONCAT( SUBSTR(foo,1,1) 
, SUBSTR(foo,2,1)
, SUBSTR(foo,3,1)
, ...
, SUBSTR(foo,10,1)
) AS foo

(这不会删除任何字符,这只是说明一种模式。扩展该模式,添加对每个单独字符的检查,返回字符(如果它是我们想要保留的字符)或空字符串(用于我们不想保留的字符。)

SELECT CONCAT( IF( INSTR('1234567890',SUBSTR(foo,1,1)), SUBSTR(foo,1,1), '')
, IF( INSTR('1234567890',SUBSTR(foo,2,1)), SUBSTR(foo,2,1), '')
, IF( INSTR('1234567890',SUBSTR(foo,3,1)), SUBSTR(foo,3,1), '')
, ...
, IF( INSTR('1234567890',SUBSTR(foo,10,1)), SUBSTR(foo,10,1), '')
) AS bar

当然,如果目标是识别要删除的字符,并保留其他所有字符,您可以交换它...如果字符匹配则返回空字符串,否则返回字符。

SELECT CONCAT( IF( INSTR('@#$abc',SUBSTR(foo,1,1)), '', SUBSTR(foo,1,1))
, IF( INSTR('@#$abc',SUBSTR(foo,2,1)), '', SUBSTR(foo,2,1))
, IF( INSTR('@#$abc',SUBSTR(foo,3,1)), '', SUBSTR(foo,3,1))
, ...
, IF( INSTR('@#$abc',SUBSTR(foo,10,1)), '', SUBSTR(foo,10,1))
) AS rab

关于mysql - 从 mysql select 语句的结果中删除字母字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36133081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com