當前位置:首頁 » 編程語言 » instrsqlserver
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

instrsqlserver

發布時間: 2022-05-25 15:08:49

1. sql 替換 兩特定字元(含特定字元)之間的欄位

如果我說如果啊,如果是abc?def?ghi?jkl你打算怎麼換是abc+jkl還是abc++jkl,當然如果沒有這種情況算我沒說。
還有你什麼資料庫啊,不同的資料庫用到的函數也不是完全一樣的。當然如果都是三位的那就簡單了,如果不都是3位的,那在用下面的方法
比如定位中oracle用instr,sqlserver中用charindex
(1)定位,定位?的位置,不知道你的?是不是字元型的,我假設它是字元型的
oracle:instr('?',欄位,1,1)(第一次出現問號的位置),instr('?',欄位,-1,1)(最後一次出現問號的位置),如果只有兩個問號也可以寫成instr('?',欄位,1,2)
sqlserver:charindex('?',欄位,1)(第一次出現問號),len(欄位)-(charindex('?',reverse(欄位))-1)(最後一次出現問號),如果只有兩個問號,可以寫成charindex('?',欄位,charindex('?',欄位,1)+1)
(2)截取需要替換的字元串substring函數,這個二者基本差不多
(3)替換,二者也是大同小異(函數基本相同,但寫法上有些區別),我就寫一個。
oracle: select replace(欄位,subter(欄位,instr('?',欄位,1,1),instr('?',欄位,-1,1)),'+') from table
至於sqlserver的那就自己完成吧,oracle我的把握大一些,sqlserver需要試驗才行,我這里可沒有相關環境。
註:我忘了問號需不需要轉譯了,這個你自己試試看吧。

2. sqlserver中如何進行截取字元串然後再計算

oracle中的方法可以這樣,但是不知道sql server中支不支持相應的函數,你可以試一下

select replace(t.number,'m','') num from table1 t //去掉m 變成100*200但是這是varchar類型不是數字
(1)instr(replace(t.number,'m',''),'*',1) 從100*200的第1位截取到 '*' 的長度,注:這時是長度,不是數字100
substr(num,1,instr(replace(t.number,'m',''),'*',1)-1) 從第一位截取到'*'之前,即取出100
(2)instr(replace(t.number,'m',''),'*',-1) 從100*200的最後1位截取到 '*' 的長度
substr(num,-1,instr(replace(t.number,'m',''),'*',-1)-1) 取出200
然後(1)*(2)就可以了(把substr裡面的num換成 replace(t.number,'m',''))
思路就這樣,你再整理一下就可以了

3. oracle 中的instr替換成sqlserver的什麼函數

Oracle:INSTR(<C1>,<C2>[,I][,J])
SQL Server:CHARINDEX(<C1>,<C2>[,I])

說明:在C2中從I開始搜索C1第1次出現的位置。I:默認1

4. SQL語句查詢條件有沒有包含的函數

當然有啊

看你什麼資料庫了

oracle里叫instr,sqlserver里叫charindex

不過返回的不是真假,而是0或其他數字,如果是0,表示不包含,如果是大於0的,則表示包含

instr和charindex的用法你查查網路吧,主要就是某一個字元串是否包含另一個字元串,如果包含的話,返回的是這個字元串的起始位置

5. sql中如何在where字句里截取某個欄位的前幾位字元

sql中在where字句里截取字元方法如下:

1、如果是sqlserver:where left(p.end_time,4) = '2012'。

2、如果是Oracle:where substr(p.end_time,0,4) = '2012'。

舉例:

1、oracle: 'where substr(欄位名,1,2)='''123''''

2、sqlserver: 'where substring(欄位名,1,2)='''123''''

(5)instrsqlserver擴展閱讀:

sql中,常用函數介紹:

1、AVG():返回平均值

2、COUNT():返回行數

3、FIRST():返回第一個記錄的值

4、LAST():返回最後一個記錄的值

5、MAX():返回最大值

6、MIN():返回最小值

7、SUM():返回總和

8、UCASE():將某個欄位轉換為大寫

9、LCASE():將某個欄位轉換為小寫

10、MID():從某個文本欄位提取字元

11、LEN():返回某個文本欄位的長度

12、ROUND():對某個數值欄位進行指定小數位數的四捨五入

13、NOW():返回當前的系統日期和時間

14、FORMAT():格式化某個欄位的顯示方式

15、INSTR():返回在某個文本域中指定字元的數值位置

16、LEFT():返回某個被請求的文本域的左側部分

17、RIGHT():返回某個被請求的文本域的右側部分

6. mysql code轉換

今天處理一個需求,表欄位中存的是以逗號分割的code,另一張表中存放著code對應的code_name,現在又要要求把表中的欄位的code轉換成code_name並以逗號分割,形式和表欄位相同。
需求說明:​
Mysql:用逗號分割的CODE轉換成NAMEX
Mysql:用逗號分割的CODE轉換成NAME
達到的效果:
Mysql:用逗號分割的CODE轉換成NAME
為了解決這個問題我就想到以前用sqlserver寫的split函數,准備拿過來修改下,結果發現兩個create function 語法不通,試圖修改了下然後發現mysql貌似不支持表變數。這下完了,就不能把逗號分割的code以表的形式傳出來去匹配了。然後去網上找mysql的split函數發現怎麼這么麻煩,寫一個函數,還要先創建兩個函數做鋪墊。果斷放棄了。
然後找了一些資料用mysql自帶的函數解決了這個問題
1、INSTR函數(INSTR相當於sqlserver的CharIndex函

7. SQLserver字元型數據在哪裡

語法如下:instr(string1,string2,start_position,nth_appearance)。
SqlServer有如下幾種聚合函數SUM、AVG、COUNT、COUNT(*)、MAX和MIN,但是這些函數都只能聚合數值類型,無法聚合字元串。

8. sql 怎樣定位一個字元所在的位置

可以通過INSTR方法來進行查詢:
sql:select INSTR('abcdefg ','c') from al;
輸出結果:3。
解釋:以上sql就是查詢c字元在「abcdefg」中的位置。

9. sql 刪除指定字元串

1、創建資料庫表