A. sql查詢只有四位的欄位
substring(B,1,4)
從B欄位中取第1至第4位字元
B. sql 查詢語句,關於某個欄位位數判斷。
1、首先我們准備一個數據表。
C. sql,字元串中取數字
1、創建測試表,
create table test_str(id int, v_str varchar2(20));
D. SQL語句提取字元串中數字
比如你的表叫作TALBE1,欄位是str1,類型為nvarchar,那麼找出有湘政發的最大號加1這樣寫
select max(convert(int,substring(str1,patindex(N'%[1234567890]%',str1),len(str1)-patindex(N'%[1234567890]%',str1)+1-patindex(N'%[1234567890]%',reverse(str1))+1)))+1 from table1 where str1 like N'%湘政發%'
測試通過,耗時很長,請認真試試。
這是sql server 的寫法。
如果是ORACAL或其它的SQL語言您可以到這里參考一下。你會發現,用SQL SERVER我的方法要比他的好
E. sql 語句一個欄位有5位數字,我想自己後三位數字有兩個相同的,怎麼查詢
是要查出後三位中有兩個數字相同的該欄位是吧?
select 目標欄位
from tablename
where substring('目標欄位',3,1)=substring('目標欄位',4,1) or
substring('目標欄位',3,1)=substring('目標欄位',5,1) or
substring('目標欄位',4,1)=substring('目標欄位',5,1) or
這種方法查出來的欄位可能包括後三位都相同的情況,樓主可以自己再加條件,主要思路就是這樣
F. 在SQL語句中如何用正則取出一個字元串的前幾位數字
SQL 取字元串的前幾位數字,SQL 關鍵字 substring
substring 使用方法,參考下列SQL:
declare @T nvarchar(10)
set @T='12345abcde'
select substring(@T,1,5)
結果如下:12345
如果是SQL 寫正則表達式判斷,只能通過存儲過程或函數來處理
SQL 如下:
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
G. sql語句問題,怎麼將查詢出來的數據,只取第2第3條數據
樓主好,有個方法可以獲取。使用row_number()函數。舉個例子,假設你你有一個產品表,有一個銷量表,你需要提取產品的銷量排名的第二條和第三條,則:
select * from (
select *,row_number()over(partition by a.產品ID order by b.銷量 desc) as cn from 產品表 a
join 銷量表 b on a.產品ID=b.產品ID
) a where a.cn in (2,3)
如果不會,還可以追問
H. SQL 查詢中如何取出中間指定的幾位數
欄位=「OM手冊」
select substring(欄位,3,2),* from 表
最後結果就是 「手冊」
I. SQL 只截取數字的函數,
select substring(列名,開始位置,結束位置) from tb
J. 如何在sql語句中查詢只帶數字的欄位
你應該希望提取的欄位只要含有數字就提出,剔除空和不含數字的字元串。
select * from table where regexp_substr(check,'[0-9]+') is not null