Oracle中CHAR型別自動補足空格的問題
在ORACLE中,CHAR型別的欄位值會自動補足空格。所以當其作為條件時,就有可能查不出想要的資料。
如果不允許改DB設計的話,那就用
RTRIM來解決吧。
DB:
CREATE TABLE TEST
(
TEST_ID VARCHAR2(64) NOT NULL,
TEST_CHAR CHAR(10),
CONSTRAINT TEST_ID PRIMARY KEY (TEST_ID)
);
INSERT INTO TEST VALUES('1','a');
測試程式碼:
Session session = factory.getCurrentSession();
session.beginTransaction();
List list = session.createQuery("FROM
Test WHERE RTRIM(TEST_CHAR) = 'a'").list();
session.close();
相關推薦
Oracle中CHAR型別自動補足空格的問題
在ORACLE中,CHAR型別的欄位值會自動補足空格。所以當其作為條件時,就有可能查不出想要的資料。 如果不允許改DB設計的話,那就用 RTRIM來解決吧。 DB: CREATE TABLE TEST ( TEST_ID VARCHAR2(64) NOT NULL
MySQL(5.0)和Oracle(11g)中char型別區別(踩坑過)
1:mysql中charCHAR資料型別是MySQL中固定長度的字元型別。 我們經常宣告CHAR型別,其長度指定要儲存的最大字元數。 例如,CHAR(20)最多可以容納20個字元。如果要儲存的資料是固定大小,則應使用CHAR資料型別。在這種情況下,與VARCHAR相比,您將獲
在oracle中創建自動增長字段
lac 創建表 測試 nocache ide char emp tab 技術分享 參考http://www.cnblogs.com/jerrmy/archive/2013/03/13/2958352.html oracle在創建表時和其他的數據庫有點不一樣,如SQL SER
怎麽解決ORACLE 中 CHAR類型的索引問題
添加 關聯查詢 系統 pre 破壞 補全 如果 關聯 acl 在很多場景中,都有如下情況 trim(a.colunm1) = trim(b.colunm2) 應該怎麽優化呢? 用到 TRIM 的很多原因是某些系統為了提高查詢效率,不使用 ORACLE 的特有的,優秀的
oracle中 char,varchar,varchar2的區別
設計 var 自動 一定的 效率 將在 長度 lec 補齊 區別: 1. CHAR的長度是固定的,而VARCHAR2的長度是可以變化的, 比如,存儲字符串“abc",對於CHAR (20),表示你存儲的字符將占20個字節(包括17個空字符),而同樣的VARCHAR
java中char型別轉換成int型別
PlanA: char ch = '9'; if (Character.isDigit(ch)){ // 判斷是否是數字 int num = Integer.parseInt(String.valueOf(ch)); System.out.println(num); }
oracle中資料型別對應java型別[轉載] oracle中資料型別對應java型別
oracle中資料型別對應java型別 轉載地址:https://www.cnblogs.com/softidea/p/7101091.html 地址: http://otndnld.Oracle.co.jp/document/products/oracle10g/102/
Oracle中CHAR、VARCHAR的區別
1、CHAR。 CHAR儲存定長資料很方便,CHAR欄位上的索引效率級高,比如定義char(10),那麼不論你儲存的資料是否達到了10個位元組,都要佔去10個位元組的空間,不足的自動用空格填充,所以在讀取的時候可能要多次用到trim()。 2、VARCHAR。 儲存變長資料,但儲
Oracle中Clob型別處理解析
最近利用NHibernate對映型別為Clob欄位在插入資料時發現當字元的位元組數(一個半形字元一個位元組,一個全形字元兩個位元組)在2000-4000之間時報錯(ORA-01461:僅可以插入LONG列的LONG值賦值)。經過不斷查詢資料和自己的試驗該問題終於得到解決,下
oracle中日期型別與unix 時間戳的轉換
Unix時間戳記是從'1970-01-01 00:00:00'GMT開始的秒數,表現為整數型。 Oracle中的時間是Date型,以下函式提供了兩種時間轉換的Oracle函式 (1)從Unix時間戳記轉換為Oracle時間 create or replace function
linux c++中char型別
linux c++中char預設是帶符號的,使用(int)ch 對char型別進行轉換得到的可以是負值,如ch真實是255,通過轉換到int將得到-1,但是怎麼得到255進行列印輸出呢?可以使用(int)((unsigned char)(ch)),先將ch轉換為unsigne
Oracle中日期型別與 Unix 時間戳的…
Unix時間戳記是從'1970-01-01 00:00:00'GMT開始的秒數,表現為整數型。 Oracle中的時間是Date型,以下函式提供了兩種時間轉換的Oracle函式 (1)從Unix時間戳記轉換為Oracle時間 create or replace function unix_to_oracle(
C++中char型別詳解
# 1char與字元的關係 ##1.1char型別到底代表什麼 提到char型別,我相信學過C/C++的並不會陌生,char型別代表一個位元組,在記憶體中有8位,所以signed char的範圍為-128~127,unsigned char的
C++中char型別與string區別與聯絡
C++中內建了一些基本型別,包含算數型別和空型別。 算數型別(arithmetic type)包含字元、整數型、布林型和浮點數。其中基本的字元型別是char型別,最小尺寸為8位位元組。 C++除了內建型別外,還有抽象資料型別庫,而string則是其中重要的一個標準庫型別。S
Oracle中Date型別日期精度問題
背景分析 需要使用JasperReport統計出使用者交易資料,並生成報表,在根據日期(Date型別)進行統計資料的時候總是出現不科學的錯誤, 我使用的是SqlDeveloper這款資料庫連線工具,資料庫是Oracle 11g。 問題描述 我根據日期group by,
oracle中char與varchar2的區別 | 面試
概括:char與varchar2都是Oracle的資料儲存格式。char是定長的,varchar2是變長。都可以儲存字串。 char是定長的 char(10) , varchar2(10)是變長的 當我們同樣存 a ,char佔用了10個字元(a佔一個,另外9個使用空格佔用),varch
C++中char型別陣列的長度問題
char* a =new char[30]; cout<<"未初始化char陣列--sizeof = "<<sizeof(a)<< endl; cout<<"未初始化char陣列--strlen = "<<st
C#和C++中char型別的區別
對於char,這個字元型別。我們一般都認為就是一個位元組。今天在仔細比較發現,C#的char和C++的char是有區別的。 1.首先來看C#中char佔多大空間 using System; using System.Collections.Generic; usin
java中char型別
編碼方式 java中的編碼方式是Unicode碼,char型別在java中被當做是整數進行儲存的,Unicode碼是一種無符號的編碼的方式 0~65535的編碼值可以表示幾乎所有的語言。定義的時候使用''單引號包括住。 ‘A’(65)~‘Z’(90) ; 'a'(97)
Oracle中varchar2型別欄位長度限制使用問題
為紀念中華人民共和國建軍90週年,特此一篇,以此紀念,我軍威武!!!一、問題背景專案中商品釋出,卻沒有儲存成功。二、問題定位初步判斷向資料庫中儲存時出現了錯誤,檢視日誌檔案,由於日誌檔案過大就採用grep進行搜尋(再一次說明grep 的強大)其中 “ReserveProductService.update”