精华内容
下载资源
问答
  • MySQL中怎么对varchar类型排序问题 asc升级 desc降序 在mysql默认orderby只对数字与日期类型可以排序,但对于varchar字符型类型排序好像没有用了,下面我来给各位同学介绍varchar类型排序问题如何解决。 今天在对...

    MySQL中怎么对varchar类型排序问题

    asc 升级

    desc降序

    在mysql默认order by 只对数字与日期类型可以排序,但对于varchar字符型类型排序好像没有用了,下面我来给各位同学介绍varchar类型排序问题如何解决。

    今天在对国家电话号码表进行排序的时候发现了一个有趣的问题,我想让isdcode字段按照由小到大的顺序排序,于是乎我是这样写的

    SELECT * FROM gb_country_isdcode ORDER BY isdcode asc

    结果如下,发现竟然不是我想要的结果,asc排序是对的呀,于是乎我找呀找,找呀找,终于找到原因了;

    isdcode是varcher类型的,如果排序的直接用asc显然是不行的,必须将他转换成int类型然后就可以正常排序了,只要isdcode + 0就可以了

    于是乎这样写

    SELECT * FROM gb_country_isdcode ORDER BY (isdcode+0) asc

    好像是想要的那种数据比较大小的了呀。。可是为什么+0就好了呢?原来,+0后就转换INT类型排序了。这样就可以按照大小排序了。

    如果不是电话而是汉字怎么办,汉字排序我们只要进行简单转换即可排序了。

    在mysql中使用order by对存储了中文信息的字段,默认出来的结果并不是按汉字拼音的顺序来排序,要想按汉字的拼音来排序,需要把数据库的字符集设置为UTF8,然后在order by 时候强制把该字段信息转换成GBK,这样出来的结果就是按拼音顺序排序的。例如:

    SELECT * FROM table_name ORDER BY CONVERT(column_name USING gbk);

    在mysql中试了一下,结果很令人满意。

    结论是:查询的时候,通过convert函数,把查询出来的数据使用的字符集gb2312编码就可以了,然后使用convert之后的中文排序。但是如果真的去把表中字段的字符集改成gb2312,又会涉及到很多编码的问题,页面传值啊,从数据库中存取啊,很麻烦。只要在查询的时候,指定一下字符集,并不是真的把物理字段改成gb2312,很简单。

    展开全文
  • mysql varchar类型和oracle的varchar2类型 1. 案例说明 mysql的varchar(4000)同步到 oracle12c后被转换为varchar2(4000),当源端的值到5000以后,oracle这边就装不进去了。 2. 处理步骤 只得采用下列步骤更改...

    mysql varchar类型和oracle的varchar2类型

    1. 案例说明

       mysql的varchar(4000)同步到 oracle12c后被转换为varchar2(4000),当源端的值到5000以后,oracle这边就装不进去了。
    

    2. 处理步骤

    只得采用下列步骤更改oracle字段的数据类型
    alter table CW.CUSTOMER drop REASON;
    停掉业务执行,不停报ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
    alter table CW_RZ.CUSTOMER add (REASON clob);

    3. 认识mysql的varchar类型
    声明为varchar的列长度是可变的,mysql5.7.2 varchar的长度范围为0-65535个字节.采用varchar类型存储数据需要1-2个字节(长度超过255时需要2个字节)来存储字符串的实际长度.如果该列的编码为gbk,每个字符最多占用2个字节,最大长度不能超过32766个字符.如果该列的编码为utf8,每个字符最多占3个字节,最大字符长度为21845。由此可知mysql的varchar(4000)可以放5000个字节甚至更多,而oracle varchar2(4000)真就只能放4000个字节。

    展开全文
  • 如下表:先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序语法:select str_to_date(class_time,'%Y%m%d %H:%i:%s') a from a order by a desc ;下面接着看下oracle中varchar类型的日期格式...

    如下表:

    12362L001-0.png

    先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序

    语法:select str_to_date(class_time,'%Y%m%d %H:%i:%s') a from a order by a desc ;

    12362J929-1.png

    下面接着看下oracle中varchar类型的日期格式转换date类型

    oracle中varchar类型的日期格式转换date类型

    SELECT to_char(to_date(m.ma_datetime,'yyyy-MM-dd hh24:mi:ss'),

    'yyyyMMdd') FROM my_task m;

    m.ma_datetime是varchar2类型的日期格式,先转换date类型

    (必须添加时分秒,不然报ora-01830错误)

    然后在随心所欲的转换成varchar类型

    您可能感兴趣的文章:mysql中char与varchar的区别分析Mysql varchar大小长度问题介绍mysql VARCHAR的最大长度到底是多少mysql如何处理varchar与nvarchar类型中的特殊字符探究MySQL中varchar的定义长度MySQL数据库中把int转化varchar引发的慢查询Mysql数据库中把varchar类型转化为int类型的方法Mysql中varchar长度设置方法MySQL动态修改varchar长度的方法

    展开全文
  • blob转Varchar类型

    2018-11-23 14:48:12
    昨天遇到一个问题,ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小,去找问题时候,发现是sql查询语句的to_char方法将clob类型转换成varchar类型出了问题,oracle中varchar最大的长度是4000。...

    昨天遇到一个问题,ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小,去找问题时候,发现是sql查询语句的to_char方法将clob类型转换成varchar类型出了问题,oracle中varchar最大的长度是4000。把clob大文本类型直接转换成varcahr类型时:在clob的长度小于4000的时候,没有超过varchar的最大值,不会出问题,一旦超过4000就会报“ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小”。

    查询了相关资料后发现有两种解决方法:

    ①java中解决:利用流将数据读取到char[]中,然后再将char[].toString():

    public String clobToString(){
    Reader inReader;
    try {
    inReader = clob.getCharacterStream();
    BufferedReader br = new BufferedReader(inReader);
    String s = br.readLine();
    StringBuffer sb = new StringBuffer();
    while (s != null) {
    sb.append(s);
    s = br.readLine();
    }
    return sb.toString();
    } catch (SQLException e) {
    e.printStackTrace();
    }catch(IOException e){
    e.printStackTrace();
    }
    }

    ②sql中解决:将bold转换成clob,再将clob转换成varchar(注:从http://blog.csdn.net/wbo112/article/details/9041575中摘取):

    oracle中varchar2字段存入blob字段及blob转成varchar2
    CREATE OR REPLACE FUNCTION C2B (b IN CLOB default empty_clob()) RETURN BLOB
    -- typecasts BLOB to CLOB (binary conversion)
    IS
       res            BLOB;
       b_len          number  := dbms_lob.getlength(b) ;
       dest_offset1   NUMBER  := 1;
       src_offset1    NUMBER  := 1;
       amount_c       INTEGER := DBMS_LOB.lobmaxsize;
       blob_csid      NUMBER  := DBMS_LOB.default_csid;
       lang_ctx       INTEGER := DBMS_LOB.default_lang_ctx;
       warning        INTEGER;
    BEGIN
       if  b_len  > 0  then
       DBMS_LOB.createtemporary (res, TRUE);
       DBMS_LOB.OPEN (res, DBMS_LOB.lob_readwrite);
       DBMS_LOB.convertToBlob (res,
                               b,
                               amount_c,
                               dest_offset1,
                               src_offset1,
                               blob_csid,
                               lang_ctx,
                               warning
                              );
     else
       select   empty_blob()  into  res  from  dual ;
      end if ;
       RETURN res;                                             -- res is OPEN here
    END C2B;

    1,首先利用to_clob函数把varchar2字段转成 clob字段。
    2  利用上面函数将clob转成blob。
    说白了就是  c2b(to_clob(varchar2字段))

    create or replace Function Blob_To_Varchar (Blob_In In Blob) Return clob
    Is
        V_Varchar Varchar2(32767);
         V_Varchar1 Varchar2(32767);
        V_Start Pls_Integer := 1;
        V_Buffer Pls_Integer := 4000;
    Begin
     
        If Dbms_Lob.Getlength(Blob_In) Is Null Then
            Return '';
        End If;
        V_Varchar1 := '';
     --return to_char(Ceil(Dbms_Lob.Getlength(Blob_In) / V_Buffer));
        For I In 1..Ceil(Dbms_Lob.Getlength(Blob_In) / V_Buffer) Loop
            --当转换出来的字符串乱码时,可尝试用注释掉的函数
            --V_Varchar := Utl_Raw.Cast_To_Varchar2(Utl_Raw.Convert(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));
            V_Varchar :=  Utl_Raw.Cast_To_Varchar2(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start));
            V_Varchar1 := V_Varchar1 || V_Varchar;
        
            V_Start := V_Start + V_Buffer;
        End Loop;
        Return V_Varchar1;
    End Blob_To_Varchar;
    1.首先执行上面的函数,返回的是个clob
    2将clob转成varchar2
    说白了 就是    to_char(Blob_To_Varchar(字段))
    创建二个函数 然后就可以用了,如果说实现 数据库里面大字段的批量替换还是比较方便

    update DR_RPT_REPORT_DATASOURCE
    set data_sql = 
    c2b(to_clob((select replace(Blob_To_Varchar(data_sql),'XXX','XXX') from DR_RPT_REPORT_DATASOURCE where data_id 
    ='XXXX' ))) where data_id = '' ;


    文章参考于:https://blog.csdn.net/qq_15139447/article/details/51149361
    展开全文
  • 达梦数据库varchar类型长度解析

    千次阅读 2020-04-03 23:37:46
    我们在数据迁移或是往数据表中导入中文字符时,经常会出现varchar类型超过字符长度的报错,可是我们一看长度是够啊,怎么会报错,错在那里?今天我们就来分析一下varchar数据类型长度的占比。 在说varchar类型之前...
  • Hive中varchar类型转换为int类型排序

    千次阅读 2019-11-20 16:25:24
    Hive中varchar类型转换为int类型排序 MySQL为我们提供了两个类型转换函数:CAST和CONVERT 但貌似Hive中貌似只可用cast 如下 此处capital_loss为varchar类型,排序的时候会按照字符串排序方式;1开头的字符串排在前面...
  • varchar 类型和int类型的区别

    千次阅读 2018-11-27 17:39:45
    刚开始将每日点击量的字段类型设置成了varchar类型 错误的查询结果如下 备注 从左往右,字符串的比对也是从左往右,逐一进行大小比对,21作为字符串而不是整形数字时,它的首位2要比1大,所以作为最大字符被排列在...
  • OILDATE为varchar类型,欲将 20141130120140 格式化为 2014-11-30 12:01:40 select to_char(to_date(OILDATE, 'YYYYMMDD HH24MISS'), 'YYYY-MM-DD HH:MM:SS') AS OILDATE FROM PS_NYGK_OIL_GAS 先转换成date类型,...
  • varchar类型的数字比较大小

    千次阅读 2019-05-21 09:17:40
    varchar类型的数字在mysql中比较大小,或者用order by 排序的话,有时候会失效 最好的方法是转成float类型再进行比较 用cast(字段名 as 类型)函数做转换 如varchar类型的字段price,它要进行由低到高的排序,为了...
  • HGDB新版本开始兼容oracle varchar2类型,作用pg里的varchar类型支持一致 HGDB 1.3.1还不支持varchar2类型: select version(); "HighGo Database 1.3.1 windows 64-bit" create table test (name varchar2...
  • MySql中的varchar类型

    2015-04-02 17:39:43
    MySql中的varchar类型 今天新开始的项目在做数据库设计,发现自己对MySql的varchar类型还不熟悉,故又上网收集资料整理如下。 1.varchar类型的变化 MySQL 数据库的varchar类型在4.1以下的版本中的最大长度...
  • mysql中,怎么把varchar类型的字段转换成int类型的?(ps:是要把excel中的数据导到数据库的表中,可是excel中的那个字段内容是中文的,而数据库表里的那个字段内容是数字的,所以需要转换一下类型)
  • 前言:在写API接口的时候,小游戏前端传过来的数据是科学计数法字符...1.强制性的用字段为varchar类型进行比较排序 'CAST(`cashnum_week` AS UNSIGNED) $list = $wx_user->field('id,user_name,head_img,cash...
  • MySQL中,把varchar类型转为date类型

    千次阅读 2019-10-02 21:21:07
    先使用str_to_date函数,将其varchar类型转为日期类型,然后从小到大排序 语法:select str_to_date(class_time,'%Y%m%d %H:%i:%s') a from a order by a desc ; 转载于:...
  •   在开发过程中,我们经常会遇到需要对数据排序的操作,但数据在库中的存储类型不一定是支持排序的,比如VARCHAR就不支持,那么如果和VARCHAR类型的数值进行排序呢。 解决方案   cast(value as decimal),使用...
  • MySQL索引使用:字段为varchar类型时,条件要使用' '包起来 结论: 当MySQL中字段为int类型时,搜索条件where num=‘111‘ 与where num=111都可以使用该字段的索引。 当MySQL中字段为varchar类型时,搜索条件where...
  • 这个字段类型为varchar类型,内容里还带%,而目标表里是TRANSAMPRBF:NUMBER(24,6)。问题解决办法:在TRANSFORM组件里,将此字段映射改为:if isnull(DSLink14.TRANSAFPR)then setnull()else if TrimLeadingTrailing...
  • varchar类型ORDER BY按字符串排序,如下图 若想按数字大小排序,ORDER BY 的字段 + 0即可 SELECT request_number, created FROM asset_recovery_detail ORDER BY request_number + 0 ASC 效果如下: ...
  • Mysql中的varchar类型转换成int类型

    千次阅读 2018-11-01 11:33:08
    Mysql中的varchar类型转换成int类型 1.实战案例 1.1 student表结构 mysql> desc student; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--...
  • 记一次mysql varchar类型索引失效问题: left join 时候,两个varchar类型的编码不一致,会导致全表扫描。这时候需要更改表字段的编码 ,保持一致就好了。 ALTER TABLE `tablename` CHANGE `dd` `dd` VARCHAR( 45 ...
  • varchar2(50) 表示该字段bai类型varchar2类型,长度为50,可以存单字节字符50个,du如zhi字母、数dao字等,可以存储双字节字符25个,如汉字。 varchar2是Oracle中特有的一种数据库类型 varchar2 存贮为不定长。 ...
  • emoji表情存入varchar类型的字段报错 emoji表情存入varchar类型的字段报错信息如下: Cause: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x82’ for column ‘title’ at row 1 ; uncategorized...
  • Oracle varchar类型数值排序问题

    千次阅读 2018-05-28 16:40:27
    问题描述:A表中存在一个类型为varchar2的字段xh(序号),现根据xh排序SQL:select xh from A a order by a.xh;查询的结果为:1、10、11、12、13、14、15、16、17、18、...问题分析:排序时,因xh为varchar类型故...
  • mysql varchar 类型的等于

    千次阅读 2016-05-19 14:37:53
    mysql varchar 类型的等于 mysql在做条件匹配的时候会根据等号后面的只做相应的类型转换,因而会导致一些我们认为的问题。 我遇到的问题: 数据 id name 1 xiaoli 1c8b31325b86468280422ef9957e100d xiaoguo 1...
  • 各位大佬,在sqlserver2016中怎么比较24cm和9.2cm这两个字段的大小啊?而且24cm是varchar类型的字段
  • 数据库中char类型与varchar类型的适用情况1.在mysql中测试1.1.在mysql中新建stu表1.2.添加一条数据并查询1.3 测试条件查询2.在sql server中测试2.1 在sql server 中创建stu表2.2添加一条数据并查询2.3测试条件查询3....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,976
精华内容 11,590
关键字:

varchar类型