sql判斷為數字
Ⅰ sql 判斷是否為數字
不知道你是什麼資料庫啊。
以後你要詢問有關資料庫函數的問題, 最好明確說明一下啊。
Oracle 通過正則表達式判斷, 字元串是否是數字。
可以使用正則表達式的方式來判斷。
REGEXP_LIKE( 欄位 , '(^[+-]?\d{0,}\.?\d{0,}$)'
來判斷 是否是數字
Ⅱ sql判斷一個字元串是否是數字
如果是ORACLE,可以:
select translate(str,'x1234567890','x') from al,如果得到的是空則是數字,如果不是空,則是帶字元串的。
Ⅲ sql判斷是否為數字
不知道樓主的意思是不是要判斷一個欄位是否為純數字還是說是否包含數字?
可以用oracle自帶的正則表達式函數regexp_replace把數字全部取出來,然後計算數字的長度是否等於這個欄位的長度,如果等於的話說明這個值全部是數字,如果不等於的話說明值裡麵包含非數字,測試語句如下:
select(regexp_replace('lss12345',
'[^0-9]'))
from
al;---取出值裡面的全部數字
select
length('lss12345'),length(regexp_replace('lss12345',
'[^0-9]'))
from
al;
---查詢出欄位的長度和欄位內數字的長度
select*
from
al
where
length('lss12345')
=
length(regexp_replace('lss12345',
'[^0-9]'))
;
----查詢這個欄位所有的純數字列
Ⅳ SQL Server檢測是不是數字類型的函數
ISNUMERIC
確定表達式是否為一個有效的數字類型。
語法
ISNUMERIC ( expression )
參數
expression
要計算的表達式。
返回類型
int
注釋
當輸入表達式得數為一個有效的整數、浮點數、money 或 decimal 類型,那麼 ISNUMERIC 返回 1;否則返回 0。返回值為 1 確保可以將 expression 轉換為上述數字類型中的一種。
但是此函數存在Bug,就是'234a2342'同樣會認為是數字類型
可以替代的寫法是
PATINDEX('%[^0-9]%', @s)
如果返回值等於0,則是純數字型(沒有0~9之外的字元)。
對於支持小數點和正負數寫法是
PATINDEX('%[^0-9|.|-|+]%',@s)
Ⅳ 判斷字元串是否為數字
1、創建測試表;create table test_str(str varchar2(200));
Ⅵ sql語句如何判斷欄位是否為數字
--在不改變你SQL的基礎上再加一個
LEFT(col1,1)<>'-'
select
*
from
tb
where
ISNUMERIC(col1)>0
and
LEFT(col1,1)<>'-'
---
ISNUMERIC(col1)>0這個本身就將資料過濾為只有數字(正數或負數,沒有你說的其他符號了),在其基礎上再將負數的情況過濾掉就OK了