精华内容
下载资源
问答
  • 字符串比较, 将字符转换成 ASCII 对应的数字再 比较大小select ascii('100D1064'),ascii('100000') , ascii('199999') from dual;...

    字符串的比较, 将字符转换成 ASCII 对应的数字再 比较其大小

    select  ascii('100D1064'),ascii('100000') ,  ascii('199999')   from dual;

    https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements002.htm#SQLRF30027

    Character Values

    Character values are compared on the basis of two measures:

    Binary or linguistic sorting

    Blank-padded or nonpadded comparison semantics

    The following subsections describe the two measures.

    Binary and Linguistic Comparisons

    In binary comparison, which is the default, Oracle compares character strings according to the concatenated value of the numeric codes of the characters in the database character set. One character is greater than another if it has a greater numeric value than the other in the character set. Oracle considers blanks to be less than any character, which is true in most character sets.

    These are some common character sets:

    7-bit ASCII (American Standard Code for Information Interchange)

    EBCDIC Code (Extended Binary Coded Decimal Interchange Code)

    ISO 8859/1 (International Organization for Standardization)

    JEUC Japan Extended UNIX

    Linguistic comparison is useful if the binary sequence of numeric codes does not match the linguistic sequence of the characters you are comparing. Linguistic comparison is used if the NLS_SORTparameter has a setting other than BINARY and the NLS_COMP parameter is set to LINGUISTIC. In linguistic sorting, all SQL sorting and comparison are based on the linguistic rule specified by NLS_SORT.

    See Also:

    Oracle Database Globalization Support Guide for more information about linguistic sorting

    Blank-Padded and Nonpadded Comparison Semantics

    With blank-padded semantics, if the two values have different lengths, then Oracle first adds blanks to the end of the shorter one so their lengths are equal. Oracle then compares the values character by character up to the first character that differs. The value with the greater character in the first differing position is considered greater. If two values have no differing characters, then they are considered equal. This rule means that two values are equal if they differ only in the number of trailing blanks. Oracle uses blank-padded comparison semantics only when both values in the comparison are either expressions of data type CHAR, NCHAR, text literals, or values returned by the USER function.

    With nonpadded semantics, Oracle compares two values character by character up to the first character that differs. The value with the greater character in that position is considered greater. If two values of different length are identical up to the end of the shorter one, then the longer value is considered greater. If two values of equal length have no differing characters, then the values are considered equal. Oracle uses nonpadded comparison semantics whenever one or both values in the comparison have the data type VARCHAR2 or NVARCHAR2.

    The results of comparing two character values using different comparison semantics may vary. The table that follows shows the results of comparing five pairs of character values using each comparison semantic. Usually, the results of blank-padded and nonpadded comparisons are the same. The last comparison in the table illustrates the differences between the blank-padded and nonpadded comparison semantics.

    Blank-Padded

    Nonpadded

    'ac' > 'ab'

    'ac' > 'ab'

    'ab' > 'a  '

    'ab' > 'a   '

    'ab' > 'a'

    'ab' > 'a'

    'ab' = 'ab'

    'ab' = 'ab'

    'a ' = 'a'

    'a ' > 'a'

    Portions of the ASCII and EBCDIC character sets appear in Table 3-8 and Table 3-9. Uppercase and lowercase letters are not equivalent. The numeric values for the characters of a character set may not match the linguistic sequence for a particular language.

    Table 3-8 ASCII Character Set

    Symbol

    Decimal value

    Symbol

    Decimal value

    blank

    32

    ;

    59

    !

    33

    <

    60

    "

    34

    =

    61

    #

    35

    >

    62

    $

    36

    ?

    63

    %

    37

    @

    64

    &

    38

    A-Z

    65-90

    '

    39

    [

    91

    (

    40

    \

    92

    )

    41

    ]

    93

    *

    42

    ^

    94

    +

    43

    _

    95

    ,

    44

    '

    96

    -

    45

    a-z

    97-122

    .

    46

    {

    123

    /

    47

    |

    124

    0-9

    48-57

    }

    125

    :

    58

    ~

    126

    Table 3-9 EBCDIC Character Set

    Symbol

    Decimal value

    Symbol

    Decimal value

    blank

    64

    %

    108

    ¢

    74

    _

    109

    .

    75

    >

    110

    <

    76

    ?

    111

    (

    77

    :

    122

    +

    78

    #

    123

    |

    79

    @

    124

    &

    80

    '

    125

    !

    90

    =

    126

    $

    91

    "

    127

    *

    92

    a-i

    129-137

    )

    93

    j-r

    145-153

    ;

    94

    s-z

    162-169

    ÿ

    95

    A-I

    193-201

    -

    96

    J-R

    209-217

    /

    97

    S-Z

    226-233

    展开全文
  • Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推。字符串和数字进行操作是会报异常的,因为类型不一样不能进行比较Oracle在执行SQL的时候有些时候会自动转换,比如:...
    Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推。字符串和数字进行操作是会报异常的,因为类型不一样不能进行比较。
    Oracle在执行SQL的时候有些时候会自动转换,比如:select * from chan_customer cc where cc.customer_id = '1';即使customer_id是数字型的也可以查出来,但是Oracle有区分字符和数字就是通过加不加单引号来区分。
            为了验证oracle里字符串比较是按ascii码来比较的 ,做一个简单的验证例子。        

     

    select ascii('a'),ascii('888') from dual;   

          总结:  亲自动手执行以下,比较结果会印象深刻些!

    https://www.cnblogs.com/zxf330301/p/5653876.html

    展开全文
  • 如何比较字符串大小(超详细)

    千次阅读 2021-12-01 15:12:12
    字符串大小比较,不是以字符串的长度直接决定,而是从最左边第一个字符开始比较,大者为大,小者为小,若相等,则继续按字符串顺序比较后面的字符,主要涉及场景如下: 比较字符串常见场景及描述 做比较的两个...

    前言

    在工作中,我们常遇到比较两个值的大小的需求,如果比较的值是“数字”大小,那不用说,三岁小孩也会吧。但是如果比较的是字符串的大小,那肯定还是有些不一样的。今天我就来整理整理,希望看完后对你有所帮助 ↓
    在这里插入图片描述

    描述

    字符串大小的比较,不是以字符串的长度直接决定,而是从最左边第一个字符开始比较,大者为大,小者为小,若相等,则继续按字符串顺序比较后面的字符,主要涉及场景如下:

    比较字符串常见场景及描述

    1. 做比较的两个字符串长度不一致,不是长的字符串就一定”大”。如:例如,字符串c=“EFG”与字符串,d=“EAFG"第二个字符分是‘F’和’A’,所以C>D。
    2. 大写字母和小写字母的ASCII代码值是有区别的,所以”good”>”GOOD”。
    3. 当字符串全部用英文字母的大写(或小写)组成时,字符串的大小顺序和它们在字典中的顺序相同。
    4. 由汉字组成的字符串可以参加比较。如”张三”<”安琪”。它们的大小实际是由其拼音构成的字符串的大小来决定的。上例即:”ZHANGSAN”<”ANQI”。
    5. 当字符串有空格时,空格也参加比较。如“abcd”>“a bcd

    分享完毕,欢迎各位大佬在评论区指点补充哦
    在这里插入图片描述

    展开全文
  • 一、oracle字符串类型字段排序 首先查看建表语句 CREATE TABLE TESTTP ( ID NUMBER PRIMARY KEY, TCODE VARCHAR2(50), TCOLOR VARCHAR2(1000)) 然后往里面插入数据,数据如下图 从上面的图看来,默认是以ID进行...

    一、oracle 以字符串类型字段排序

    首先查看建表语句

    CREATE TABLE TESTTP (
        ID NUMBER PRIMARY KEY,
        TCODE VARCHAR2(50),       
        TCOLOR  VARCHAR2(1000))

    然后往里面插入数据,数据如下图

    从上面的图看来,默认是以ID进行排序展示的,但是假如我现在要以TCODE进行排序呢,且要求004排在第一位,002排在第二位,006排在第三位,008排在第四位,这样我们应该怎么实现呢

    答案:可以利用decode函数

    sql如下:

    select * from TESTTP order by DECODE(TCODE,'004',1),DECODE(TCODE,'002',2),DECODE(TCODE,'006',3),DECODE(TCODE,'008',4);

     展示结果如下

    二、decode函数的用法

    1.含义解释:

    decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

    该函数的含义如下:

    IF 条件=值1 THEN
    
        RETURN(翻译值1)
    
    ELSIF 条件=值2 THEN
    
        RETURN(翻译值2)
    
        ......
    
    ELSIF 条件=值n THEN
    
        RETURN(翻译值n)
    
    ELSE
    
        RETURN(缺省值)
    
    END IF

    2.结合order by对字符列进行特定的排序

    用法如第一大点所示

    3.翻译值

    需求:需要将tcode对应004的展示为代表蓝色,002的展示位代表红色,006的展示为代表绿色,008的展示位代表黑色

    sql为

    select t.id,t.tcolor,t.tcode,decode(t.tcode,'004','代表蓝色','002','代表红色','006','代表绿色','008','代表黑色') as colorful from TESTTP t 

    展示结果如下

    4.判断字段值是否为空

    需求:查询出TCODE为空的数据,并标识为没有颜色

    在进行判空之前往表里插入一条TCODE为空的数据,插入后展示结果如下‘’

    sql:

    select t.id,t.tcolor,decode(t.tcode,null,'没有颜色',t.tcode) tcode  from TESTTP t 

    展示结果如下

    4.结合sign函数进行大小比较

    a)比较大小函数 SIGN

    sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 ,例如:

    引用 a=10,b=20  则sign(a-b)返回-1

    需求:查询出id为10以下,刚好为10,大于10的数据,并标识出来

    sql:

    select decode(sign(t.id -10),-1,'10以下',0,'刚好为10',1,'10以上') as overTen,t.id,t.tcolor,t.tcode from TESTTP t 

     

    展开全文
  • Delphi中字符串比较大小规则:对应位置的字符按照字符编码值逐个对比,直到遇到可以确定大小关系的就结束比较 参考《Delphi的Ord函数和ASCII码对照表》 常见的一些字符的字符编码 '0'对应字符编码48;'1'...
  • oracle细节之字符串排序问题记录

    千次阅读 2018-07-28 11:47:07
    本博客记录一下一次踩坑记录,过程是这样的,在跟一个bug,涉及到一张中间表,然后这张中间表的主键是自增...这种中间表的主键,我刚开始并没有注意到是varchar类型的,以为是number类型的,数据库采用Oracle。PS:...
  • 数据库中的字符串类型比较大小

    千次阅读 2019-07-09 19:20:24
    在MySQL和Oracle数据库中,字符串类型的数据是可以比较大小的,规则是按照相同位置的字符的ASCII码值的大小进行排序的。 字符串比较大小不是比较长短,根据相同位置的字符的ASCII码进行比较。 从第一个字符开始比较...
  • 首先我们得明白在数据库中单引号是用来字符串引用的,不管是数字还是时间,当你用单引号引用起来之后,数据库就会将他当成字符串来对待。 我们先看下面两个语句: select from users where age > 30 select from...
  • SQL中MAX()和MIN()函数的使用(比较字符串大小) 在SQL数据库中,最大/最小值函数—MAX()/MIN()是经常要用到的,下面就将为您分别介绍MAX()函数和MIN()函数的使用,供您参考,希望对您学习SQL数据库能有些帮助。 ...
  • oracle字符类型的比较

    千次阅读 2018-03-12 11:07:29
    oracle字符类型也是可以比较的,有自己的比较规则。 一,首先会比较两个字符的长度是否相等。如果两个比较的长度不相等,oracle会把两个比较的东西变成长度一样。然后在从第一个字符慢慢比较。 二,字符的长度...
  • 如果你在mysql有唯一约束的列上插入两行值’A’和’a’,Mysql会认为它是相同的,而在oracle中就不会。就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事。直接使用客户端用sql查询数据库。 发现的确是大小...
  • 由于需要维护表里面的值,id主键是字符串型,保存的都是数字,每次都要看好久,才知道新增id,用哪个数字; 遇到了一个主键排序的问题。字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着...
  • 一、什么是字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使工具,错误消息,排序次序,日期,...
  • oracle字符型字段按数字排序

    万次阅读 2014-01-07 19:28:26
    字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序。 但发现to_number总是报错,就想着里面应该是有字符存在。后来使用了正则关系式,问题解决。 以下是正则关系式的两种...
  • 一般情况下使用oracle 中的sql语句 order by id 的时候,得到的排序结果是按照数字的首个数字排序的,比如说1,101,2,22,8。但有时候需要按照数字真实大小排序比如1,2,8,22,101来排序,这就需要使用在order by的后面...
  • oracle字符串比较有两类 1.填补空格的语义比较 2.非填补空格的语义比较 ... oracle然后按字符顺序比较两个字符串的值,如果发现到不同的字符,则按字段顺序认定大小,如果没有发现不同字符,or...
  • oracle几种字符类型总结

    万次阅读 2017-05-07 21:30:09
    这篇对oracle几种字符类型总结的比较好,收藏了。 一 char与varchar四种 四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。 nvarchar和...
  • db2 字符串变量比较

    2011-01-12 22:09:18
    SQL0132N LIKE 谓词或 POSSTR 标量函数无效,因为第一个操作数不是字符串表达式或第二个操作数不是字符串。LOCATE 或 POSITION 标量函数无效,因为第一个操作数不是字符串,或者第二个操作数不是字符串表达式。 此...
  • 注:N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略,fmt表示格式。  单值函数在查询中返回单个值,可被应用到select,where子句,start with以及connect by 子句和having子句。 (一).数值型...
  • Hive 字符串函数

    千次阅读 2017-11-06 20:16:55
    Hive内部提供了很多操作字符串的相关函数,本文将对其中部分常用的函数进行介绍。 下表为Hive内置的字符串函数,具体的用法可以参见本文的下半部分。 返回类型 函数名 描述 int ...
  • oracle中的分割字符串,并求最大值

    千次阅读 2007-08-21 14:45:00
    今天公司做一个 oracle中的分割字符串,并求最大值,在C# 或其它语言中都会有一个类似于split的函数,而在oracle中是没有这样现成的,不过可以通过instr和substr组合实现类似于split的功能。我来介绍一个我们的需求...
  • Oracle字符集及其查看和修改

    万次阅读 2016-06-07 17:53:38
    Oracle中查看所用字符集及修改字符集。
  • postgresql 字符串排序时,如果字符串为空 就不进行排序 比如一个字段 mobile 升序排列,排序后的数据,前几行是空字符串,后几行也是空字符串 降序排列,排序后的数据,前几行是空字符串,后几行也是空字符串 ...
  • hive字符串函数

    万次阅读 2017-01-10 13:21:00
    1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: hive> select length('abcedfg') from lxw_dual; 7 2. 字符串反转函数:...
  • 一 、字符串函数—————————————————————————————————————— 1.upper(str) 小写到大写 例:upper(kkkuuu)---KKKUUU 2.lower(str) 大写到小写 例:lower(JJJNNN)---jjjnnn ...
  • ORACLE常用数值函数、转换函数、字符串函数介绍 感于总有些网友提出一些非常基础的问题,比如有没有实现某某功能的函数啊,某某函数是做什么用的啊,格式是什么等等,同时也感受到自己对oracle函数认识的不足,于是...
  • MySQL字符串的合并及拆分

    千次阅读 2020-06-25 09:43:14
    按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符)。本文将举例演示如何进行按照指定字符合并及拆分。0...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,036
精华内容 10,814
关键字:

oracle字符串比较大小规则