MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 5981|回复: 1
打印 上一主题 下一主题

一句截短数据的SQL:把字符串中的其中一位去掉

[复制链接]
跳转到指定楼层
1#
发表于 2007-11-29 15:52:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据如下:

    1. select uid,username,password from cdb_members where username like 'GTO%';

    2. uid username password
    3. 2 GTO0000000 e10adc3949ba59abbe56e057f20f883e
    4. 3 GTO0000001 e10adc3949ba59abbe56e057f20f883e
    5. 4 GTO0000002 e10adc3949ba59abbe56e057f20f883e
    6. 5 GTO0000003 e10adc3949ba59abbe56e057f20f883e
    7. 6 GTO0000004 e10adc3949ba59abbe56e057f20f883e
    8. 7 GTO0000005 e10adc3949ba59abbe56e057f20f883e
    9. 8 GTO0000006 e10adc3949ba59abbe56e057f20f883e
    10. ......
    11. 111 GTO0000109 e10adc3949ba59abbe56e057f20f883e
    12. 112 GTO0000110 e10adc3949ba59abbe56e057f20f883e
    复制代码
    目的:缩短username列的一个数据长度,即去掉GTO0000001中间的一个‘0’, 成 GTO000001 。

    方法/脚本:
    select CONCAT(left(username,5),LPad(right(username,3),3,'0')) from cdb_members where username like 'GTO%';

    说明:
  • CONCAT(str1,str2,...)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)
mysql> SELECT CONCAT('My', 'S', 'QL');
        -> 'MySQL'

  • LPAD(str,len,padstr)
返回字符串 str, 其左边由字符串padstr
填补到len
字符长度。假如str
的长度大于len, 则返回值被缩短至 len
字符。
mysql> SELECT LPAD('hi',4,'??');

  • LEFT(str,len)
返回从字符串str
开始的len
最左字符。
mysql> SELECT LEFT('foobarbar', 5);
        -> 'fooba'
        -> '??hi'


时间仓促,随手写的,供参考。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
2#
发表于 2007-11-29 18:03:52 | 只看该作者
补充一个方法:

concat(substring(username from 1 for 8),substring(username from -1 for 1))

substring(username from 1 for 8) 取username开始的头8个字符
substring(username from -1 for 1) 取username末尾一个字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-5-5 16:51 , Processed in 0.064269 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表