在字符串中删除子字符串,请高手解答。

luonanqin 2011-03-17 09:30:35
我有这么一段字符串:
2,3,13,5,17,20,7,15,10,

现在我想删除“7,”,一开始觉得用LOCATE函数把“7,”的位置取出来,然后用LEFT函数删除就行了,但是后来我发现还有个“17,”,这样的话用LOCATE函数就不能找对位置了,于是我想到用正则把要删除的内容匹配出来得到位置,然后用LEFT去删掉它,可是用正则怎么做到得到匹配值的位置呢?求高人解答。

这个是我想到的一种删除子字符串的办法,不知道还有没有别的更好的办法,希望大家指点。
...全文
120 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
luonanqin 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wwwwa 的回复:]
用REPLACE是最简单的方法,因为你的字符串有可能不止1个,7,
[/Quote]

了解,结贴了,谢谢两位。
WWWWA 2011-03-17
  • 打赏
  • 举报
回复
用REPLACE是最简单的方法,因为你的字符串有可能不止1个,7,
luonanqin 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wwwwa 的回复:]
2,3,13,5,17,20,7,15,10,->
2,3,13,5,17,20,15,10,
这个 结果?
[/Quote]

对的。ACMAIN_CHM给出了不错的办法,虽然我还没有试,不过大概看了一下应该能解决问题,不知道你有什么高见?
WWWWA 2011-03-17
  • 打赏
  • 举报
回复
2,3,13,5,17,20,7,15,10,->
2,3,13,5,17,20,15,10,
这个 结果?
luonanqin 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wwwwa 的回复:]
引用 4 楼 luonanqin 的回复:
引用 3 楼 wwwwa 的回复:
SELECT FIND_IN_SET('7','2,3,13,5,17,20,7,15,10,')


17也包括7啊,能这样做?

测试一下吧,看看结果,另,你要达到什么目的
[/Quote]

目的我写得很清楚了,麻烦你仔细看一下,谢谢。
WWWWA 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luonanqin 的回复:]
引用 3 楼 wwwwa 的回复:
SELECT FIND_IN_SET('7','2,3,13,5,17,20,7,15,10,')


17也包括7啊,能这样做?
[/Quote]
测试一下吧,看看结果,另,你要达到什么目的
ACMAIN_CHM 2011-03-17
  • 打赏
  • 举报
回复
[Quote]另外如果用concat在替换之前都往字符串前面加上一个逗号的话,那多次操作的话,前面岂不是会有很多逗号啊?[/Quote]不是利用MID来去除这个逗号了吗?
ACMAIN_CHM 2011-03-17
  • 打赏
  • 举报
回复
[Quote]请解释一下mid的意思[/Quote]类似这种问题,不如直接自己查手册。

[Quote]MID(str,pos,len)
MID(str,pos,len) 是 SUBSTRING(str,pos,len)的同义词。

[/Quote]

[Quote]
SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)
不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。

mysql> SELECT SUBSTRING('Quadratically',5);

-> 'ratically'

mysql> SELECT SUBSTRING('foobarbar' FROM 4);

-> 'barbar'

mysql> SELECT SUBSTRING('Quadratically',5,6);

-> 'ratica'

mysql> SELECT SUBSTRING('Sakila', -3);

-> 'ila'

mysql> SELECT SUBSTRING('Sakila', -5, 3);

-> 'aki'

mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);

-> 'ki'

这个函数支持多字节字元。

注意,如果对len使用的是一个小于1的值,则结果始终为空字符串。

SUBSTR()是 SUBSTRING()的同义词。


[/Quote]
luonanqin 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wwwwa 的回复:]
SELECT FIND_IN_SET('7','2,3,13,5,17,20,7,15,10,')
[/Quote]

17也包括7啊,能这样做?
WWWWA 2011-03-17
  • 打赏
  • 举报
回复
SELECT FIND_IN_SET('7','2,3,13,5,17,20,7,15,10,')
luonanqin 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
正则匹配在MYSQL用的功能有限,无法进行定位和替换。

你的要求可以如下方法实现。
一段字符串='2,3,13,5,17,20,7,15,10,';
select mid(replace(concat(',',一段字符串),',7,',','),2);
[/Quote]

请解释一下mid的意思,另外如果用concat在替换之前都往字符串前面加上一个逗号的话,那多次操作的话,前面岂不是会有很多逗号啊?
ACMAIN_CHM 2011-03-17
  • 打赏
  • 举报
回复
正则匹配在MYSQL用的功能有限,无法进行定位和替换。

你的要求可以如下方法实现。
一段字符串='2,3,13,5,17,20,7,15,10,';
select mid(replace(concat(',',一段字符串),',7,',','),2);
第 2 章 日期处理 23 2.1 日期类型概述 23 2.2 日期处理函数 25 2.2.1 日期增减函数 25 2.2.2 日期信息获取函数 26 2.2.3 日期差值计算函数 27 2.2.4 其他日期处理相关函数 27 2.3 日期选项设置 29 2.3.1 default language选项 30 2.3.2 SET DATEFIRST 31 2.3.3 SET DATEFORMAT 31 2.3.4 SET LANGUAGE 33 2.4 日期格式化与日期推算处理 34 2.4.1 日期格式化处理 34 2.4.2 日期推算处理 35 2.4.3 日期加减处理 38 2.5 日期处理实例 40 2.5.1 生日处理 40 2.5.2 生成日期列表 42 2.5.3 工作日处理 46 2.5.4 工作时间计算 49 2.6 日期处理疑难解答 51 2.6.1 日期处理常犯的错误 51 2.6.2 常见的低效率日期处理方法 52 2.6.3 日期与数字 53 第 3 章 字符处理 55 3.1 字符类型概述 55 3.2 字符串分拆 56 3.2.1 循环截取法 57 3.2.2 动态Transact-SQL语句法 57 3.2.3 辅助表法 59 3.2.4 分拆数据到列 61 3.2.5 分拆数字数据 62 3.2.6 分拆短信数据 63 3.3 字符串合并 64 3.3.1 游标合并法 65 3.3.2 SELECT语句合并法 66 3.3.3 临时表合并法 68 3.3.4 固定行合并法 69 3.4 其他字符串处理要求 70 3.4.1 分段截取 70 3.4.2 分段更新 72 3.4.3 IP地址处理 72 3.5 字符串分拆与合并处理应用实例 74 3.5.1 字符串比较 74 3.5.2 字符串交集/并集 75 3.5.3 分拆字符串并统计 78 3.5.4 借用字符串实现无规律排序 82 3.5.5 列车车次查询 82 3.6 字符串在动态Transact-SQL语句的应用 85 3.6.1 动态Transact-SQL语句概述 85 3.6.2 字符串在编号查询的使用 87 3.6.3 动态参数存储过程 90 3.6.4 动态Transact-SQL语句常见问题 92 3.7 text与ntext字段处理 96 3.7.1 text与ntext数据的存储 96 3.7.2 管理text与ntext数据 97 3.7.3 text与ntext字段的复制和合并 99 3.7.4 text与image字段转换 101 3.7.5 ntext字段的REPLACE处理 103 第 4 章 排序规则 107 4.1 字符存储编码与排序规则 107 4.1.1 字符数据的存储编码 107 4.1.2 UNICODE 108 4.1.3 排序规则 109 4.1.4 排序规则比较和排列规则 111 4.1.5 使用排序规则 112 4.1.6 如何选择字符字段类型 116 4.2 排序规则应用 117 4.2.1 拼音处理 117 4.2.2 全角与半角字符处理 120 第 5 章 编号处理 123 5.1 自动编号 123 5.1.1 IDENTITY 123 5.1.2 ROWGUIDCOL 129 5.2 手工编号 131 5.2.1 查表法 131 5.2.2 独立编号表法 135 5.2.3 随机编号 139 5.3 缺号与补号 143 5.3.1 检查缺号 143 5.3.2 补号处理 143 5.3.3 编号重排 146 5.4 编号查询 150 5.4.1 已用编号分布查询 150 5.4.2 缺号分布查询 151 5.4.3 生成已用编号和缺号分布字符串 152 5.4.4 缺勤天数统计 155 第 6 章 数据统计与汇总 159 6.1 基本查询 159 6.1.1 空(NULL)值对查询的影响 159 6.1.2 联接 161 6.1.3 UNION与UNION ALL 165 6.1.4 数据填充查询 167 6.1.5 上限与下限区间统计 169 6.1.6 随机记录查询 170 6.2 分级汇总 173 6.2.1 实现分级汇总处理 173 6.2.2 分级汇总结果的过滤 176 6.2.3 分级汇总结果显示格式处理 177 6.2.4 分级汇总结果的排序处理 179 6.3 交叉数据报表 181 6.3.1 实现原理 181 6.3.2 多列转置 184 6.3.3 动态列 185 6.3.4 动态列的字符溢出处理 188 6.3.5 特殊的交叉报表 191 6.4 典型数据统计案例 193 6.4.1 库存明细账查询 193 6.4.2 同期及上期数据对比 197 6.4.3 动态分组统计 199 6.4.4 销售排行榜 200 第 7 章 分页处理 205 7.1 应用程序的分页处理 205 7.2 数据库的分页处理 207 7.2.1 使用TOP N实现分页 207 7.2.2 使用字符串 211 7.2.3 使用临时表 213 7.2.4 使用SQL Server的系统存储过程处理分页 216 7.3 特殊要求的分页处理 217 7.3.1 随机显示的分页处理 217 7.3.2 分类数据的分页处理 221 第 8 章 树形数据处理 223 8.1 单编号处理法 223 8.1.1 方法概述 223 8.1.2 逐级汇总 225 8.1.3 编码重排 226 8.1.4 调整编码规则 229 8.1.5 调整编码隶属关系 233 8.2 双编号处理法 238 8.2.1 方法概述 239 8.2.2 树形数据排序 240 8.2.3 查找节点 244 8.2.4 查找父节点 245 8.2.5 编码校验 246 8.2.6 节点复制 249 8.2.7 节点删除 251 8.2.8 逐级汇总 253 8.3 树形数据的扩展形式 256 8.3.1 产品配件清单 256 8.3.2 公交车乘车线路查询 258 第 9 章 数据导入与导出 261 9.1 访问外部数据 261 9.1.1 链接服务器 261 9.1.2 OPENROWSET与OPENDATASOURCE 268 9.1.3 外部数据访问方法总结 270 9.2 文本文件的导入与导出 274 9.2.1 查询文本文件内容 274 9.2.2 BCP与BULK INSERT 277 9.3 导入与导出的常见问题 285 9.3.1 访问外部数据的注意事项 285 9.3.2 使用BCP或者BULK INSERT时的注意事项 286 9.3.3 外部数据文件位置及文件访问权限问题 287 9.4 在客户端实现SQL Server数据导入与导出处理 288 9.4.1 在Access数据库实现与SQL Server之间的数据交换 288 9.4.2 实现客户端其他OLE DB数据源与SQL Server之间的数据交换 289 9.4.3 在客户端实现SQL Server数据导入与导出处理的一些说明 289 9.5 在数据库存取文件 290 9.5.1 SQL Server的文件存取方法 290 9.5.2 程序的文件存取处理方法 292 第 10 章 作业 295 10.1 作业概述 295 10.1.1 定义作业 295 10.1.2 使用系统存储过程定义作业的常用模板 300 10.2 作业的应用 303 10.2.1 定时启用(或者停用)数据库 303 10.2.2 执行耗时的存储过程 304 10.2.3 秒级作业 305 10.3 使用作业的疑难解答 309 第 11 章 数据备份与还原 315 11.1 数据库备份与还原方法介绍 315 11.1.1 完全备份与还原 315 11.1.2 差异备份与还原 317 11.1.3 日志备份与还原 319 11.1.4 数据文件或文件组备份与还原 320 11.1.5 备份设备 321 11.1.6 数据库恢复模型对数据库备份和还原的影响 322 11.2 制订数据库备份方案 326 11.2.1 备份方案制订原则 326 11.2.2 建立数据备份方案 327 11.3 数据库备份与还原的实践应用 332 11.3.1 系统数据库的备份与还原 332 11.3.2 数据库迁移 336 11.3.3 部分数据库还原 339 11.3.4 抢救损坏数据库的数据 341 11.3.5 将数据还原到指定时间点 343 11.3.6 将数据还原到指定标记点 345 11.3.7 同步备用服务器 346 11.4 数据备份与还原疑难解答 349 11.4.1 数据备份与还原的常见问题 349 11.4.2 使用媒体集备份时的常见问题 354 11.4.3 数据库还原的孤立用户问题 356 11.4.4 查询备份文件的信息 360 第 12 章 用户定义数据类型 361 12.1 用户定义数据类型概述 361 12.1.1 创建和删除用户定义数据类型 361 12.1.2 为用户定义的数据类型绑定规则 365 12.1.3 为用户定义的数据类型绑定默认值 370 12.2 修改用户定义数据类型 373 12.2.1 修改被表引用的用户定义数据类型 373 12.2.2 修改被存储过程引用的用户定义数据类型 379 第 13 章 数据库安全 383 13.1 SQL Server的存取构架 383 13.1.1 表格格式数据流(TDS) 383 13.1.2 Net-Library与网络协议 384 13.1.3 Net-Library加密 387 13.2 用户管理 388 13.2.1 身份验证模式 388 13.2.2 登录、用户、角色和组 390 13.2.3 管理用户 395 13.3 数据文件安全 403 13.4 SQL Server安全配置 405 13.4.1 安全配置建议 405 13.4.2 使用安全套接字层(SSL)加密 408 13.5 应用程序上的安全 417 13.5.1 防止SQL注入式攻击 417 13.5.2 限制应用程序访问 418 13.5.3 不安全的扩展存储过程 419 第 14 章 系统表应用实例 423 14.1 系统对象概述 423 14.1.1 每个数据库都存在的系统表 424 14.1.2 仅在系统数据库存在的系统表 424 14.1.3 系统表应用三个重要的系统存储过程 426 14.2 系统表在对象信息检索的应用 429 14.2.1 搜索指定的对象所处的数据库 429 14.2.2 获取存储过程参数定义 432 14.2.3 搜索指定字符在哪个表的哪个字段 435 14.2.4 非UNICODE字段改为UNICODE字段的可行性查询 438 14.2.5 字段相关对象查询 439 14.2.6 生成数据库字典 443 14.3 系统对象在处理的应用 444 14.3.1 批量处理数据库的对象 444 14.3.2 将所有的char、varchar改为nchar、nvarchar 445 14.3.3 标识列与普通列的相互转换 447 14.3.4 把列添加指定位置 450 14.3.5 在两个SQL Server数据库之间复制对象 451 第 15 章 SQL Server应用疑难解答 455 15.1 访问SQL Server实例的常见问题 455 15.1.1 连接失败 455 15.1.2 用户登录失败 458 15.1.3 测试连接到SQL Server实例的方法总结 458 15.1.4 超时 459 15.1.5 单用户的问题 460 15.1.6 默认数据库问题 461 15.2 索引的疑难解答 462 15.2.1 索引对查询条件的影响 462 15.2.2 索引对查询结果顺序的影响 465 15.2.3 索引对数据操作的影响 469 15.3 数据库日志疑难解答 470 15.3.1 影响日志文件增长的因素 471 15.3.2 从事务日志删除日志记录 472 15.3.3 日志文件处理的误区 472 15.3.4 合理解决日志文件增长 473 15.4 错误处理疑难解答 474 15.4.1 错误处理概述 474 15.4.2 错误处理严重程度 475 15.4.3 使用@@ERROR的疑难解答 476 15.4.4 XACT_ABORT与RAISERROR的疑难解答 477 15.5 游标处理疑难解答 479 15.5.1 全局游标与本地游标 479 15.5.2 检查指定的游标是否存在 480 15.5.3 事务提交或者回滚对游标的影响 482 15.5.4 可更新的游标 483 15.6 SQL Server处理的其他疑难解答 484 15.6.1 并发工作负荷调控器 484 15.6.2 存储过程的疑难解答 486 15.6.3 标识值疑难解答 488 15.6.4 全文检索疑难解答 491 15.6.5 发布与订阅的常见问题 494 15.6.6 其他疑难解答 496

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧