『壹』 sql 替換某一位置字元
sql server 2005及以上版本可使用STUFF函數。
語法:
STUFF(character_expression,start,length,character_expression)
參數說明:
character_expression:一個字元數據表達式。character_expression可以是常量、變數,也可以是字元列或二進制數據列。
start:一個整數值,指定刪除和插入的開始位置。如果start或length為負,則返回空字元串。如果start比第一個character_expression長,則返回空字元串。start可以是bigint類型。
length:一個整數,指定要刪除的字元數。如果length比第一個character_expression長,則最多刪除到最後一個character_expression中的最後一個字元。length可以是bigint類型。
返回類型
如果character_expression是受支持的字元數據類型,則返回字元數據。如果character_expression是一個受支持的 binary 數據類型,則返回二進制數據。
注釋
如果開始位置或長度值是負數,或者如果開始位置大於第一個字元串的長度,將返回空字元串。如果要刪除的長度大於第一個字元串的長度,將刪除到第一個字元串中的第一個字元。
如果結果值大於返回類型支持的最大值,則產生錯誤。
示例
以下示例在第一個字元串abcdef中刪除從第2個位置(字元b)開始的三個字元,然後在刪除的起始位置插入第二個字元串,從而創建並返回一個字元串。
SELECTSTUFF('abcdef',2,3,'ijklmn');
GO
下面是結果集:
---------
aijklmnef
(1 row(s) affected)
以上摘自:https://msdn.microsoft.com/zh-cn/library/ms188043(v=sql.105).aspx
『貳』 sql 怎樣定位一個字元所在的位置
可以通過INSTR方法來進行查詢:
sql:select INSTR('abcdefg ','c') from al;
輸出結果:3。
解釋:以上sql就是查詢c字元在「abcdefg」中的位置。
『叄』 sql 改變字元串中的某一位
update table set 列= substring(列,1,3)+'1'+substring(列,5,len(列)-4) where 條件
『肆』 sql怎樣定位一個字元所在的位置
常用的字元串函數,其作用可分為四大類:串接字元、截取字元、轉換字元、其他作用的字元函數。
串接,就是把單獨的字元串組合為一個。如把人的姓和名串接在一起形成一個完整的姓名字元串。
截取,是指從字元串里提取出一部分字元,形成子串。可以分為截取字元、提取字元的位置。
轉換,是指把一個字元串中的內容或形式變換成另一個內容或形式。分為內容轉換和形式轉換。
其他作用的字元函數:以上三種作用之外的其他字元函數。
下面詳細介紹。
串接函數
可以通過+或者-,實現串接操作。在不同的資料庫管理系統中,使用的串接符號不同。
在SQL SERVER中的代碼為:SELECT 『JOHN』+ 『SON』
在MySQL中的代碼為:SELECT CONCAT(『JHON』,『SON』)
截取函數
1、SUBSTR(COLUMN NAME,STARING POSITION,LENGTH)
COLUMN NAME:欄位名稱
STARING POSITION:起始位置,即從第幾個字元開始截取
LENGTH:長度,即截取多少個字元的長度
select emp_id,substr(emp_id,1,3) from employee
從雇員表中檢索出雇員編號,雇員姓名兩個欄位。其中雇員姓名可通過從編號ID的前三個字元截取得到。
2、TRIM()、LTRIM()、RTRIM(),剪除字元串中的字元。
SQL 中的 TRIM 函數是用來移除掉一個字串中的字頭或字尾。最常見的用途是移除字首或字尾的空白。這個函數在不同的資料庫中有不同的名稱:
MySQL: TRIM( ), RTRIM( ), LTRIM( )
Oracle: RTRIM( ), LTRIM( )
SQL Server: RTRIM( ), LTRIM( )
各種 trim 函數的語法如下:
TRIM ( [ [位置] [要移除的字串] FROM ] 字串): [位置] 的可能值為 LEADING (起頭), TRAILING (結尾), or BOTH (起頭及結尾)。 這個函數將把 [要移除的字串] 從字串的起頭、結尾,或是起頭及結尾移除。如果我們沒有列出 [要移除的字串] 是什麼的話,那空白就會被移除。
LTRIM(字串): 將所有字串起頭的空白移除。
RTRIM(字串): 將所有字串結尾的空白移除
『伍』 MS SQL Server有沒有查找字元串位置的函數
sql 查找字元串位置使用CHARINDEX函數。
CHARINDEX函數,在一段字元中搜索字元或者字元串。
語法
CHARINDEX ( expression1 , expression2 , [ start_location ] )
參數
expression1
一個表達式,其中包含要尋找的字元的次序。expression1是一個短字元數據類型分類的表達式。
expression2
一個表達式,通常是一個用於搜索指定序列的列。expression2屬於字元串數據類型分類。
start_location
在expression2中搜索expression1時的起始字元位置。如果沒有給定start_location,而是一個負數或零,則將從expression2的起始位置開始搜索。
返回類型
int
例:
『陸』 SQL如何按指定字元在字元串中的位置來排序
CreateTableT
(
idint,
StVarchar(100)
)
InsertIntoTValues(1,'魂牽夢縈復方丹參a草葉魂牽夢縈')
InsertIntoTValues(2,'魂牽夢縈復方丹參草葉a魂牽夢縈')
InsertIntoTValues(3,'魂牽夢縈復方丹參草葉b魂牽夢縈')
InsertIntoTValues(4,'魂牽夢縈復方丹參b草葉魂牽夢縈')
InsertIntoTValues(5,'魂牽夢縈復方丹參草葉魂牽abc夢縈')
InsertIntoTValues(6,'魂牽夢縈復方丹參草葉什麼都沒有魂牽夢縈')
--先按是否包含a/b排序(包含的在前面,不包含的在後面)
--再按a/b在字元串中出現的位置排序
Select*FromT
OrderbyCaseWhenPATINDEX('%[ab]%',St)>0Then0Else1End,PATINDEX('%[ab]%',St)
『柒』 怎樣用SQL語句批量修改字元串中指定位置的字元
--假如修改第10位的字元
update 表名 set 欄位名=left(欄位名,9) + '要替換成的內容' + substring(欄位名,11,len(欄位名))
『捌』 sql中取指定字元串出現位置的方法
可用charindex函數。
如:查找字元串中「你好」的位置
執行:
select charindex('你好','2432你好dsfasdf')結果:
結論:「你好」中的「你」的起始位置是5,所以這樣就能判斷出指定字元的位置了。
『玖』 用sql表值函數實現字元串的位置調換
創建
createfunction[dbo].wei
(@scodevarchar(10))
Returnsvarchar(10)
As
Begin
Declare@lenint
Declare@tvarchar(10)
select@len=len(@scode)
set@t=''
if@len%2=1
begin
set@t=SUBSTRING(@scode,@len/2+2,@len/2)+SUBSTRING(@scode,@len/2+1,1)+SUBSTRING(@scode,1,@len/2)
end
elseif@len%2=0
begin
set@t=SUBSTRING(@scode,@len/2+1,@len/2)+SUBSTRING(@scode,1,@len/2)
end
return@t
end
執行測試
selectdbo.wei('1230456')
selectdbo.wei('123456')
『拾』 SQl如何把某幾個字放到字元串的最前面
查找欄位內容,然後把字元串臨安替換成空,重組字元串,寫入資料庫