sql過濾數字
Ⅰ SQL 查詢語句問題(過濾數字)
select * from tab where cn not like '%[0-9]%'
Ⅱ SQL中怎樣提取純數字或者純字母的欄位
完全按照DB2語法設計:
drop function TEST
go
create function test(@input varchar(100))
returns int
begin atomic
declare @int int default 0;
declare @input_lenght int default 0;
set @input_lenght = length(@input);
while @input_lenght <> 0 do
if ( substr(@input,length(@input) - @input_lenght +1,1) in ('0','1','2','3','4','5','6','7','8','9') ) then
set @int = @int + 0;
elseif ( substr(@input,length(@input) - @input_lenght +1,1) in ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')) then
set @int = @int - 1;
end if;
set @input_lenght = @input_lenght -1;
end while;
if ( @int = 0 or @int = -1* length(@input)) then --- 如果累積為0全是數字;如果累積正好是-1乘以長度則正好全是欄位
return 0;
else
return 1;
end if;
end
go
select test ('123456') from sysibm.al 結果是 0
select test ('123b456a') from sysibm.al 結果是 1
select test ('abcdefg') from sysibm.al 結果是 0
Ⅲ sql 去除欄位中非數字字元
思路:找到第二個$,更新數據為$後面的
實例:
UPDATE A
SET A.a1 = (
SUBSTR(a1, INSTR(a1, $, '2') + 1, LENGTH(a1))
)
Ⅳ 用SQL語句實現數據篩選
--將欄位條件篩選建立臨時表
selecttop100*
into#temp
fromtable
wherenamenotin("%批發%","不含'%廠")
andregionin("餐飲",..."副食")--填寫完每個經營面
--返回數據表,企業數和個體戶,這個區分不知道用什麼,所以第二個欄位還需要改
selectprovince,count(distinctname)asnum_company,
casewhenname="個體戶"thencount(distinctname)asnum_indivial
from#temp
Ⅳ sql 語句 急!!!! 數據將英文和數字去掉,只保留漢字的sql語句
1、創建測試表,
create table test_replace_str(value varchar2(200));
4、編寫語句,將英文和回數字去掉答,只保留漢字;
select t.*, regexp_replace(value, '[a-zA-Z0-9]', '') sec
from test_replace_str t;
Ⅵ 如何使用SQL語句把字元欄位里的數字篩選出來
可以參考使用如下寫法
如果要全部數據則可以
select * from table T1 where 欄位 = (select max(欄位) from table T2 where T1.欄位2 = T2.欄位2)
或
select * from table T1 where not exists(select * from table T2 where T1.欄位2 = T2.欄位2 and T1.欄位 < T2.欄位
如果只是數據行數則可以
select count(distinct 欄位)from table
Ⅶ 用sql查詢時,怎麼判斷欄位中是否含有數字,如果有就把數字去掉
/*
用正則表達式或者自定義函數
下面是用正則表達式的代碼
如果報錯的話,需要開啟OleAutomationProceres
execsp_configure'showadvancedoptions',1;
RECONFIGURE;
execsp_configure'OleAutomationProceres',1;
RECONFIGURE;
execsp_configure'showadvancedoptions',0;
RECONFIGURE;
*/
--能按正則表達式替換的函數
CreateFunction[dbo].[MyReplace](@RegVarchar(1000),@SourceVarchar(4000),@StrVarchar(1000))
returnssql_variant
As
Begin
Declare@ErrInt
Declare@objInt
Declare@Rstsql_variant
EXEC@Err=Sp_OACreate'VBScript.RegExp',@objOUTPUT
If@Err<>0GoToLB
EXEC@Err=Sp_OASetProperty@obj,'Pattern',@Reg
If@Err<>0GoToLB
EXEC@Err=Sp_OASetProperty@obj,'Global','True'
If@Err<>0GoToLB
EXEC@Err=Sp_OASetProperty@obj,'IgnoreCase','False'
If@Err<>0GoToLB
EXEC@Err=Sp_OAMethod@obj,'Replace',@RstOUTPUT,@source,@Str
If@Err<>0GoToLB
EXEC@Err=Sp_OADestroy@obj
If@Err<>0GoToLB
Return@Rst
LB:
EXECSp_OADestroy@obj
RETURNNull
End
--查詢(把所有數字替換為空)
selectdbo.myreplace('d',欄位,'')from表
Ⅷ SQL 過濾字元欄位值
select * from spk where isnumeric(spbh)=0
解釋:
ISNUMERIC
確定表達式是否為一個有效的數字類型。
語法
ISNUMERIC ( expression )
參數
expression
要計算的表達式。
返回類型
int
注釋
當輸入表達式得數為一個有效的整數、浮點數、money 或 decimal 類型,那麼 ISNUMERIC 返回 1;否則返回 0。返回值為 1 確保可以將 expression 轉換為上述數字類型中的一種。
Ⅸ sql查詢過濾掉數字,現表A中有一個字元串student_id欄位,裡面存的應該是126356546這樣的字元串
/*
方案一:
把student_id不是數字的取出來,然後用是數字最大的一個student_id+記錄號進行編號(這里考慮student_id是主鍵不能重復的情況)
然後把這個編號更新給student_id
*/
With CT
As
(
Select student_id,(Select MAX(student_id) From T
Where isnumeric(student_id)=1)+ROW_NUMBER()Over(Order By student_id)
As cnt From T
Where isnumeric(student_id)=0
)
Update CT Set student_id=cnt
/*
方案二
不是數字的id,分別把裡面的字母A替換為1,B替換為2,依次
思路
把不是字母id的,按字母拆分,然後把他的Ascii-64再合並成一個字元串
最後用這個字元串更新給id
(不能保證關鍵是否重復)
*/
With CT
As
(
Select student_id,SUBSTRING(student_id,1,1) As Tmp,1 As LV From T Where ISNUMERIC(student_id)=0
Union All
select student_id,SUBSTRING(student_id,LV+1,1) ,LV+1 From CT Where LV<LEN(student_id)
)
Update T Set student_id=Rst
From(
Select student_id,
(Select Convert(Varchar(2),Unicode(Upper(Tmp))-64) From CT
Where student_id=A.student_id
For XML Path('')) AS Rst
FROM CT A
Group By student_id) s
Where T.student_id=s.student_id
Ⅹ SQL中select語句如何過濾出欄位中第1位數字元合設定條件的行
SELECT * FROM 表名 WHERE (列名 LIKE '4%')
SELECT * FROM 表名 WHERE (列名 NOT LIKE '4%')