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

sql怎麼取數字前4位數

發布時間: 2023-03-25 03:51:07

A. 在sql語句中如何用正則取出一個字元串的前幾位數字

  1. SQL 取字元串的前幾位數字,SQL 關鍵字 substring

  2. substring 使用方法,參考下列SQL:

  3. declare @T nvarchar(10)

  4. set @T='12345abcde'

  5. select substring(@T,1,5)

  6. 結果如下:12345

  7. 如果是SQL 寫正則表達式判斷,只能通過存儲過程或函數來處理

  8. SQL 如下:

  9. CREATE FUNCTION dbo.find_regular_expression
    (
    @source varchar(5000), --需要匹配的源字元串
    @regexp varchar(1000),--正則表達式
    @ignorecase bit = 0--是否區分大小寫,默認為false
    )
    RETURNS bit--返回結果0-false,1-true
    AS
    BEGIN
    --0(成功)或非零數字(失敗),是由 OLE 自動化對象返回的 HRESULT 的整數值。
    DECLARE @hr integer
    --用於保存返回的對象令牌,以便之後對該對象進行操作
    DECLARE @objRegExp integer DECLARE @objMatches integer
    --保存結果
    DECLARE @results bit

    /*
    創建 OLE 對象實例,只有 sysadmin 固定伺服器角色的成員才能執行 sp_OACreate,

    並確定機器中有VBScript.RegExp類庫
    */
    EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    /*
    以下三個分別是設置新建對象的三個屬性。下面是'VBScript.RegExp'中常用的屬性舉例:
    Dim regEx,Match,Matches '建立變數。
    Set regEx = New RegExp '建立一般表達式。
    regEx.Pattern= patrn '設置模式。
    regEx.IgnoreCase = True '設置是否區分大小寫。
    regEx.Global=True '設置全局可用性。
    set Matches=regEx.Execute(string) '重復匹配集合
    RegExpTest = regEx.Execute(strng) '執行搜索。
    for each match in matches '重復匹配集合
    RetStr=RetStr &"Match found at position "
    RetStr=RetStr&Match.FirstIndex&".Match Value is '"
    RetStr=RetStr&Match.Value&"'."&vbCRLF Next
    RegExpTest=RetStr
    */
    EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    EXEC @hr = sp_OASetProperty @objRegExp, 'Global', false
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignorecase
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    --調用對象方法
    EXEC @hr = sp_OAMethod @objRegExp, 'Test', @results OUTPUT, @source
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    --釋放已創建的 OLE 對象
    EXEC @hr = sp_OADestroy @objRegExp
    IF @hr <> 0 BEGIN
    SET @results = 0
    RETURN @results
    END
    RETURN @results
    END

B. sql取特定字元的前面幾位字元

MSSQL的就用這個吧,直接可以查詢出來
SELECT LEFT(MB002,PATINDEX('%-%',STUFF(MB002,PATINDEX('%-%',MB002),1,'*'))-1) FROM 表名

C. sql2005 查詢表中某個欄位的的前4位

Num列是什麼類型的呢?如果是bigint類型,效率最高的方法是用between來確定數值范圍
SELECT * FROM tableA WHERE Num BETWEEN 230100000000 AND 2301999999999
也可以通過其它方法,但是如果Num列上有索引,進行算數運算的話就不能使用索引快速檢索數據了。

D. SQL 有沒一種方法 可以把 6位數 後兩位 去掉 只取前4 位

SQL裡面不叫方法,叫做函數。可以用substring函數,它的作用是在一個字元串中,從指定位置開始截取多少位,。你要娶前面4位,可以這樣:select substring(bbc,1,4) from abc

E. sql如何截取字元串中前面的數字

如果提取字元串中的數字,需要自定義函數,以下函數包含截取字元串中的數字、字母、漢字等。

createfunctionfn_myget
(@strasvarchar(max),
@categoryasvarchar(10)='Chinese',
@startasint=1,
@endasint=100000)
returnsvarchar(max)
as
begin
declare@iint=@start
declare@lenstrint=len(@str)
declare@str1varchar(max)
declare@strrevarchar(max)=''
while@i<=@lenstrand@i<=@end
begin
set@str1=substring(@str,@i,1);
--提取漢字
if(@Category='Chinese')
begin
if(len(@str1)!=datalength(@str1))
set@strre=@strre+@str1
end
--提取字母
elseif(@Category='Letters')
begin
if((ascii(@str1)>=65andascii(@str1)<=90orascii(@str1)>=97andascii(@str1)<=122))
set@strre=@strre+@str1
end
--提取數字
elseif(@Category='Digital')
begin
if(ascii(@str1)>=48andascii(@str1)<=57)
set@strre=@strre+@str1
end
else
set@strre='輸入錯誤'
set@i=@i+1
end
return(@strre)
end

測試:

1、截取字元串dsajf23423423中的數字

selectdbo.fn_myget('dsajf23423423','Digital',1,1000)

結果:

自定義函數說明:

函數共需要4個參數:

第一個參數是要截取的字元串;

第二個參數根據要截取的內容不同,分別有「Digital」(截取數字)、「Letters」(截取字母)、「Chinese」(截取中文);

第三個參數代表截取的起始位;

第四個參數代表截取的截取的結束位。

F. sql 怎麼取 字元串的前幾位

sql中,使用LEFT函數即可取到字元串的前幾位。

LEFT(c, number_of_char)用於返回某個被請求的文本域的左側部分,其中c代表被請求的文本域,number_of_cha代表需要取出的字元串位數。如「LEFT("..com", 6)」即可取得字元串""。

(6)sql怎麼取數字前4位數擴展閱讀:

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():返回某個被請求的文本域的右側部分

G. 如何用sql獲取一串數字中的第4位到第八位

這個使用substring ,就可以實現吧!

declare@avarchar(20)
selectsubstring(@a,4,4);--從第四位開始,共截取四位

H. sql怎麼取字元串的前幾位

sql語句截取字元串前幾位語句:
select
substr(cont_no,1,9)
from
for_contract
SUBSTRING
(
expression
,
start
,
length
)
expression:是字元串、二進制字元串、text、image、列或包含列的表達式。不要使用包含聚合函數的表達式。
start:是一個整數,指定子串的開始位置。
length:是一個整數,指定子串的長度(要返回的字元數或位元組數)。
eg:select
id
from
users
id的值是001.002$
select
substring(ID,charindex('.',ID)+1,(charindex('$',ID)-charindex('.',ID)-1))
as
idx

I. SQL查詢提問:取前四位,並將後面的數據相加~

select substr(b.h_n_subject,0,4) as h_n_subject,
sum(g.h_count) as h_count,
sum(g.h_eval) as h_eval,
sum(g.h_ai) as h_ai
from table
group by h_n_subject

另外,這種取欄位前四位並進行判斷的設計,在海量數據的時候執行效率會非常低。這是資料庫設計不規范導致。為什麼你們不把前四位單獨作為一個欄位 然後後兩位作為一個欄位,然後兩個欄位再綁定在一起?

J. sql中對某欄位截取前4位後計數

select
d / 100 as 截取前4位後,
count(*) as 各有多少
from

group by
d / 100

如果結果中 d / 100 返回了小數, 例如 1234.56
那麼你需要使用一個函數來做 取整的 處理

如果你資料庫是 Oracle 或者 DB2, 那麼
用 TRUNC ( d / 100 ) 替換掉 d / 100

如果你資料庫是 SQL Server
用 ROUND( d / 100 , 0, 1 ) 替換掉 d / 100