Oracle varchar型別數值排序問題
問題描述:
A表中存在一個型別為varchar2的欄位xh(序號),現根據xh排序
SQL:select xh from A a order by a.xh;
查詢的結果為:1、10、11、12、13、14、15、16、17、18、19、2、20、21、22、23。。。。
這不是我想要的結果,理想的結果為:1、2、3、4、5、6、7、8、9、10、11。。。。
問題分析:
排序時,因xh為varchar型別故排序時按照xh的字元從左向右依次比較。
解決辦法:
利用CAST函式把該欄位的值由varchar2轉為int型別
select xh from A a order by CAST(a.xh AS INTEGER);
查詢結果為:1、2、3、4、5、6、7、8、9、10、11。。。。
相關推薦
Oracle varchar型別數值排序問題
問題描述:A表中存在一個型別為varchar2的欄位xh(序號),現根據xh排序SQL:select xh from A a order by a.xh;查詢的結果為:1、10、11、12、13、14、15、16、17、18、19、2、20、21、22、23。。。。這不是我想
MySql----資料型別(數值型別、char/varchar、enum、set、date)
一:資料型別分類: 二:數值型別 1.bit bit[(M)] : 位欄位型別。M表示每個值的位數,範圍從1到64。如果M被忽略,預設為1。 例: //表tt3的sno的值有8個位 mysql> create table tt3(age int,sno bit(8))
mysql進階(八)怎麼對varchar型別排序問題
MySQL中怎麼對varchar型別排序問題 asc 升級 desc降序 在mysql預設order by 只對數字與日期型別可以排序,但對於varchar字元型型別排序好像沒有用了,下面我來給各位同學介紹varchar型別排序問題如何解決。 今天在對國家電話號碼錶進行排序的
資料庫 order by varchar型別排序
首先說明下oracle中沒有String型別,而是Varchar型別。order by 的順序是assic(讀作:阿斯科馬)碼錶中”字元“列進行排序的。 解釋:一般會根據字串的首字母:大些字母>小寫字母>特殊字元>數字。如果首位相同繼續排列第二位,直到
mysql進階 八 怎麼對varchar型別排序問題
MySQL中怎麼對varchar型別排序問題 asc 升級 desc降序 在mysql預設order by 只對數字與日期型別可以排序,但對於varchar字元型型別排序好像沒有用了,下面我來給各位同學介紹varchar型別排序問題如何解決。 今天在對國家電
varchar型別的欄位儲存純數字的排序
如果表字段的型別為varchar型,但是裡面儲存的是純數字,怎麼實現按照數字的大小來排序?下面的方法對於mysql和oracle都實用order by 欄位+0order by 欄位*1等等都可以實現例子:mysql> select * from goolen ord
mysql 查詢varchar型別欄位排序
首先,如果裡面存的是字母,會按英文字母順序排序,如果含有數字,按數字大小排序,如果含有漢字,按照所選擇的漢字編碼排序。 一般情況下,int型別的欄位可以直接使用max()函式查詢出某一列的最大值,但是對於varchar型的欄位,我們有的時候需要排序或查最大值,直接用max
oracle資料庫char和varchar型別的區別
char與varchar都是用來儲存字元型。但是他們還是有區別的。一,長度的問題。char型別的長度是固定,不會變。假如char(5)儲存'abc'和'abcde'的長度都是5,區別在於存'abc'的時候,不夠的長度會由空格補充到為5的長度。所以如果用char儲存資料的時候,
sql中,把varchar型別轉換為int型,然後進行排序
如果我們資料庫的ID設定為varchar型的 在查詢的時候order by id的話我們是不希望看到如下情況的。 我們可以把varchar轉換為int 然後進行排序 一、 select * fro
Oracle分析函數-排序排列(rank、dense_rank、row_number)
2.0 有時 weight style tile log rownum 可能 ins (1)rank函數返回一個唯一的值,除非遇到相同的數據時,此時所有相同數據的排名是一樣的,同時會在最後一條相同記錄和下一條不同記錄的排名之間空出排名。 (2)dense_rank函數返回一
mysql從頭學一 1.0資料型別-數值型別
數值型別 MySQL 支援所有標準 SQL 中的數值型別,其中包括嚴格數值型別(INTEGER、SMALLINT、 DECIMAL 和 NUMERIC),以及近似數值資料型別(FLOAT、REAL 和 DOUBLE PRECISION),並在此基礎上做了擴充套件。擴充套件後增加了 TINY
oracle資料型別和運算子
一: oracle當中的基本元素: 1: 識別符號:給資料庫物件進行命令。 (table view column index sequence Function trigger ).
ORACLE時間型別欄位加減簡便運算
例子: 以下“(9)”這塊無需替換,可以根據需要替換“1”或者“ ‘2’ ”即可。 -- 年份運算(當前時間-2年) SELECT SYSDATE - (1 * INTERVAL '2' YEAR(9)) AS YEAR_OPERATION FROM DUAL;
java 物件String型別屬性排序
方法一:內部類實現comparator介面 程式碼演示 import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; class B{ String name; String da
ORACLE CLOB 型別轉換為字串
在ORACLE 中儲存 大量 文字 超過了 3000個漢字 varchar 裝不下 迫不得已使用了 : CLOB 型別 CLOB 型別轉換為字串: select dbms_lob.substr(ADDR_SHAP
ORACLE自定義順序排序
ORACLE可以藉助DECODE函式,自定義順序排序: select * from ( select 'Nick' as item from dual union all select 'Viki' as item from dual union all
數值範圍超過int型別數值的運算
超大數的運算 本程式對於數值範圍超過int型別的函式進行運算操作 其中包括介面的實現 #include "stdafx.h" #include <stdio.h> #include <string.h> #include <stdlib.h> #i
oracle中mybaties關於排序傳參order by 的問題
java中:String order=" person_name desc" 在mapper中: <if test="order ! =null"> order by #{order} </if> 讀取
oracle 日期型別入庫
如果oracle的欄位型別是TIMESTAMP(6): sql層:update SG_CON_FDC set TYSJ = to_timestamp('2018/12/11', 'yyyy-mm--dd hh24:mi:ss.ff')
Oracle時間型別總結
1.DATE資料型別 這個資料型別我們實在是太熟悉了,當我們需要表示日期和時間的話都會想到date型別。它可以儲存月,年,日,世紀,時,分和秒。它典型地用來表示什麼時候事情已經發生或將要發生。 DATE資料型別的