1. 程式人生 > >資料庫查詢,刪除,更新條件的時候注意條件是否去除空格!

資料庫查詢,刪除,更新條件的時候注意條件是否去除空格!

一、去掉尾部的空格字元。

有時候在查詢或者進行其他處理的時候,需要把字串尾部的空格字元去掉。如有時候應用軟體設計的不合理,會把空格字元儲存在資料庫中。如在輸入產品品號的時候,使用者不小心,把“DT001”輸成了“DT001”。如果應用程式在設計的時候,能夠自動把尾部的空格去掉然後在儲存到資料庫中能夠就萬無一失了。但是不少的應用軟體在開發的時候沒有如此設計。這就給後續的處理帶來了很多的麻煩。因為利用Where語句來查詢記錄的時候,“DT001”(最後不帶空格)與“DT001”(最後帶一個空格)兩個是不同的條件。如果想利用這個條件來進行資料更新、查詢等等,就會遇到問題。為此在寫相關的Update或者Select語句的時候,可能需要把後面的空格符號去掉。為此在Oracle資料庫中,有很多種解決方式。如資料庫管理員可以使用Ltrim函式來實現。這個函式的格式為Ltrim[c1,c2]。其作用是去掉C1左邊所包含的C2種的任何字元。當遇到不是C2種的字串時結束,然後返回剩餘的字串。如果把C2字串設定為空格符號(預設情況下就是空格),那麼就可以把DT001後面的空格符號去掉了。

二、在頭部自動進行填充。

有時候可能資料庫設計的時候,考慮的不夠周到,導致某些欄位不夠大。在對資料庫進行升級的時候,需要調整相關的欄位。此時就可能需要對某個欄位的頭部進行填充,以達到資料一致性的要求。如現在有個ERP系統,其需要用到一張產品資訊的表,其中有一個產品編號欄位。剛開始在設計產品編碼的時候,設計的長度不夠,如只設置了5位。隨著企業產品記錄的增多,需要對這個編碼的內容進行擴充套件。如產品資訊屬於包裝材料類的,需要在原來產品編號的頭部加入一個字元B;如產品資訊屬於客供品的,則需要在原來產品編號的頭部加入一個字元C;如產品資訊屬於輔助材料的,則在原來的產品編號前面加入一個字元F;等等。此時該如何實現這個需求呢?難道要一個個去修改嗎?現在這手工修改的工作量比較大,而且容易出錯,這個方法不可取。其實在Oracle資料庫系統中提供了一個單行字元函式,可以幫助資料庫管理員與企業來解決這個問題。這個函式就是RPAD函式。這個命令的格式為RPAD(C1,N,C2)。這個函式的意識是在C1的右邊填充字元C2,直到字串的總長度滿足N。預設情況下C2的值為空格,使用者可以根據自己的需要設定這個值。如果C1的長度比N要大,則會擷取C1右邊的N個字元。現在如果要實現上面這個需求,則只需要設定函式RPAD(產品編號,6,F)即可。由於原來的產品編號為5位,現在需要為輔助資訊的產品編號前面加入一個字元F,修改後的總長度變為6位。不過在使用這個函式的話,往往需要利用Where條件語句進行限制。

現在這個函式還可以裡用實現字串的擷取。如還是這個產品編號,其前面一位表示產品的種類。此時資料庫管理員就可以利用RPAD(產品編號,1)來擷取產品編號的第一位字元(這裡產品編號的長度比1要大,則會擷取產品右邊的1個字元,即產品類別標示碼)。這在報表設計的時候也非常有用,有利於簡化報表的顯示。

三、字元大小寫的控制。

在做報表的時候,我們可能需要對字串的現實格式進行控制,如大小寫的顯示格式。另外,在進行資料庫移植的時候,可能以前的收入大小寫不規範。資料庫管理員需要採用一定的規則來規範移植後的資料庫字串書寫規範。為了簡化這些需求的實現方式,在Oracle資料庫中也提供了一些工具來解決這些問題。

如以前在輸入產品編號的時,可能大小寫不區分。而在前臺應用程式中也沒有進行這方面的控制。現在使用者希望所有的產品編號都為大寫,需要把原先是小寫的產品編號全部轉換成大寫。此時如果產品數量比較多的話,顯然利用手工修改的方式會增加工作量。如果編寫一個程式來實現的話,又太複雜,其實我們可以借鑑Oracle資料庫提供的字串處理函式來實現。在單行字元函式集中,有一個函式UPPER,它的作用就是將全部字串都改寫為大寫並返回。為此我們可以利用一個子查詢或者藉助檢視的幫助,把所有產品編號中,如果含有小寫字元的產品編號都更新為大寫。如果原來就是大寫的,就保持原樣(而不是說原來大寫的變小寫,原來小寫的變大寫)。同理,既然小寫可以變大寫,那麼大寫也就可以變為小寫。利用單行字串函式LOWER,就可以把全部字串改為小寫輸出(把大寫字母改為小寫,而小寫字元保持不變)。

另外一個大小寫的控制原則比較複雜,如對於一些英文地址或者英文名字之類的字串,需要首個字母大寫,而其他字元小寫。這個實現起來就有一定的難度。還好在Oracle資料庫中提供了一個現成的解決方法,即利用Initchar函式來實現。這個函式的功能是將某個欄位中每個單詞的首字元轉換為大小,其他字元都是小寫的字串。通常情況下,這個欄位之間的單詞可以利用空格、控制字元或則標點符號來表示。可見通過這個三個大小寫字串控制函式,可以優化字串的顯示格式,讓其顯示更加的規範。而結合Update語句的話,還可以成批的在資料庫中進行更新,讓其儲存的資料也符合規範化的要求。

四、字串中的複雜替換。

幾年之後,杭州進行來一些行政區劃的規格,如把下沙市改為了直屬杭州管轄的下沙區。為此有一家企業的資料庫管理人員就問筆者,能否把一些記錄中的下沙市都改為下沙區。什麼意思呢?也就是說,在資料庫中可有含有如下記錄“下沙市某某鋼鐵廠”、“杭州市某某服裝廠”、“濱江區某某資訊有限公司”等等。現在資料庫管理員希望把含下沙市的內容都改為下沙區。這涉及到一些複雜欄位的替換,實現起來具有一定的難度。資料庫是結構化資料的結合體,不比Word文件,可以利用查詢替換功能來解決這個需求。那麼在Oracle資料庫中該如何實現呢?在Oracle資料庫中就模擬實現了Word文件中的查詢替換功能。

如在單行字元函式中有一個叫做Replace的函式,就可以幫助資料庫管理員實現這個需求。這個函式的格式為Replace(C1,C2,C3)。他的含義就彪死後把C1中出現的C2都替換成C3,然後返回字串。這是什麼意思呢?其實就是跟Word文件中的查詢替換功能類似。從字串C1種查詢C2的內容,如果找到的話利用C3來代替。如果C3的內容為空,則所有在欄位中出現C2內容的字元都將被刪除。那要實現上面的需求,就可以把這個函式的引數設定為Replace(Adress,下沙市,下沙區)。然後再利用Upadate語句把這個函式返回的值賦值給地址欄位即可。如此,在資料庫地址欄位中,出現下沙市的地方將全部被更新為下沙區。但是這個更改不會影響到其他的記錄。如不會把杭州市也改為杭州區等等。

為此,要實現一些複雜的字元替換作業,可以利用函式Replace來完成。有時會,把Replace函式與其他函式相結合,還可以實現一些更加複雜的內容。如在產品基本資訊中,產品編號中可能包含了產品的分類資訊,如PSD001這個產品編號,第一個字元P表示成批,第二三個字元SD表示手動工具。如果自動工具的話就為PZD001。在生成報表的時候,如果利用這些字元來顯示結果的話,顯然報表的可讀性並不是很好。此時資料庫管理員可以先利用字串擷取函式或者利用上面所提到過的頭部填充函式等等來擷取相關的字串,然後再利用現在這個查詢替換函式,則可以把ZD等字元轉換成“自動工具”等代表含義的字串,這將提高報表的可讀性。可見,將Replace替換函式與其他函式結合(C1、C2、C3引數都可以利用函式來實現)從而可以實現複雜的替換功能。

相關推薦

資料庫查詢刪除更新條件的時候注意條件是否去除空格

一、去掉尾部的空格字元。 有時候在查詢或者進行其他處理的時候,需要把字串尾部的空格字元去掉。如有時候應用軟體設計的不合理,會把空格字元儲存在資料庫中。如在輸入產品品號的時候,使用者不小心,把“DT001”輸成了“DT001”。如果應用程式在設計的時候,能夠自動把尾部的空格去

C#對資料庫的操作(查詢刪除更新

查詢: static IQueryable<Outlet> Query(string Region, string DC, string CustomerCode, string KA, string OutletCode, string NestleOutletCode

12W學習筆記——獨立子查詢更新刪除建立視圖

記錄 date 筆記 獨立 https 清空 名單 sel 方式 查詢的學習進入了最後階段了,接下來我就來介紹一下查詢最後的獨立子查詢。 獨立子查詢基本上都是用SELECT FROM WHERE 三個語句。 例:在學院表、專業表中,查詢人文與管理學院下設各專業的簡稱

Qt5.9Creator讀寫Mysql5.7.17資料庫詳細例子(資料庫基本操作:建立表查詢插入刪除修改)

本文章主要總結的內容是用Qt5.9Creator工程讀寫Mysql5.7.17資料庫。具體的操作步驟如下所述。   一、用Qt5.9的Creator建立一個Console工程,選擇MinGW32編譯器。   二、新增程式碼 2.1建立好工程後,在.pro檔案裡

tthinkphp5.0的 插入更新刪除查詢方法。

插入 第一種:Db::table('oa_user')->insert(['array'=val,'value'=>key]) 第一種 Db::name('user')->inse

Jdbc--實現對資料庫查詢更改刪除新增等方法

1.先新建一個數據庫,程式碼如下: CREATE TABLE user_t ( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL DEFAULT '', pa

資料庫---索引操作(索引的建立刪除查詢

1、建立索引 create index 索引名 on 表名(列名); 2、刪除索引 drop index 索引名; 3、建立組合索引 create index 索引名 on 表名(列名1,,列名2); 4、查詢索引 --根據索引名,查詢表索引欄位 select * f

查詢刪除修改加Json排序

center function model ng- amp dev 點擊事件 .sh 入庫 <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name

單鏈表的插入刪除查詢轉置

單鏈表的定義 線性表的鏈式儲存又稱為單鏈表,它是指通過任意一組的儲存單元來儲存線性表中的資料元素。 在單鏈表中,每個節點包含一個指向連結串列下一節點的指標。連結串列最後一個節點的指標欄位的值為NULL,提示連結串列後面不再有其它節點。它是非隨機存取的儲存結構,操作時只能從表頭開始遍歷。

Influxdb 的更新刪除怎麼搞。

 對於你的業務中出現 Influxdb 的更新和刪除 我只能說最好不要去搞!!!  檢視官網得知InfluxDB 雖然提供了和SQL 類似的資料庫語句,但是對於更新資料和刪除資料是不支援的。這裡說的不支援是SQL 不支援。舉個例子你就不嫌我囉嗦:   如下資料:

Linux程式設計 18 安裝軟體程式(yum工具對軟體包安裝刪除更新介紹)

一.   概述   本篇介紹在linux上見到的各種包管理系統(package management system,PMS)用來進行軟體安裝,管理,刪除的命令列工具。PMS是利用一個數據庫來記錄各種相關內容,包括: linux系統上已安裝了什麼軟體包,每個包安裝了什麼檔案,每個已安裝軟體包的版本。   軟體包

AVL樹C++實現(插入刪除查詢清空遍歷操作)

AVL.h檔案程式碼 #pragma once #include<iostream> #include<stack> #include <assert.h> using namespace std; using namespace std; template<cl

angular實現全選反選批量刪除刪除全不選倒序模糊查詢等功能

效果圖如下: html程式碼如下: <body ng-app="myApp" ng-controller="myCtrl"> <button ng-click="dx(seq)">倒序</button> <butto

二叉搜尋樹的查詢刪除插入-C語言程式碼

1. 什麼是二叉搜尋樹? 2. 基本操作 2.1 儲存結構 #include <stdio.h> #include<stdlib.h> #define ElementType int typedef struct TreeNode

資料結構:實現動態順序表的各項介面(初始化銷燬尾插尾刪頭插頭刪刪除排序查詢等)

實現動態順序表 SeqList.h #pragma once ////靜態順序表 //#define N 10 //typedef int SLDateType; //typedef struct SeqList //{ // int _a[N];//陣列 /

二叉搜尋樹的基本操作 ---- 插入刪除查詢銷燬遍歷

首先來看看二叉搜尋樹的概念 二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹 若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值 它的左右子樹也分別為二叉搜尋樹

【資料結構】二叉搜尋樹的插入刪除查詢等基本操作的實現

1、基本概念 二叉搜尋樹:又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹 若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值 它的左右子樹也分別為二叉搜尋樹 沒有鍵值相等的節

C#中對 XML節點進行新增刪除查詢刪除操作

從網上整理所得 XMLDocument來操作XML比較簡單,雖然有時效率不是很高。程式碼如下 已知有一個XML檔案(bookstore.xml)如下:   <?xml version="1.0" encoding="gb2312"?> <books

使用DataList實現 加入購物車編輯刪除更新取消功能

****************************Demo.aspx    <form id="form1" runat="server">     <div>             <asp:DataList ID="DataLis

二叉排序樹的基本操作(建立中序遍歷查詢刪除插入)

分析: 二叉排序樹的操作的難點在於刪除操作,刪除操作時,只需要滿足二叉排序樹的性質即可,即需要找到要刪除結點p的左孩子的最右下方的數替代該結點的資料,然後刪除p->lchild的最右下方的結點即可。 對於p->lchild==NULL的,只需要讓雙親結點直接指向