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

sql含有一段數字的欄位

發布時間: 2023-01-23 04:27:50

⑴ 如何在sql語句中查詢只帶數字的欄位

你應該希望提取的欄位只要含有數字就提出,剔除空和不含數字的字元串。

select * from table where regexp_substr(check,'[0-9]+') is not null

⑵ SQL取欄位中某一部分特定數值

如果只是固定取"20/30"比較容易, 只需找到"20/30"在此字元串的開始位置,再截取5個字元的長度就可以了,如:
SELECT CASE WHEN CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30') > 0 THEN SUBSTRING('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30'),5) ELSE '' END

如果不一定是20/30,而是與"/"前後關聯的數字(eg: 14/20, 33/66,等...),就麻煩了,你可能需要寫一個抽取字元串的函數,如: f_substr(),然後在SQL里調用:
select 用戶.f_substr('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg')

⑶ sql 如何查詢包含某一欄位的值

這種情況需要寫存儲過程,進行全庫搜索。代碼如下:

declare@cloumnsvarchar(40)
declare@tablenamevarchar(40)
declare@strvarchar(40)
declare@countsint
declare@sqlnvarchar(2000)
declareMyCursorCursorFor
Selecta.nameasColumns,b.,sysobjectsb,systypesc
wherea.id=b.id
andb.type='U'
anda.xtype=c.xtype
andc.namelike'%varchar%'
set@str='張三'
OpenMyCursor
FetchnextFromMyCursorInto@cloumns,@tablename
While(@@Fetch_Status=0)
Begin
set@sql='select@tmp_counts=count(*)from'+@tablename+'where'+@cloumns+'='''+@str+''''
executesp_executesql@sql,N'@tmp_countsintout',@countsout
if@counts>0
begin
print'表名為:'+@tablename+',欄位名為'+@cloumns
end
FetchnextFromMyCursorInto@cloumns,@tablename
End
CloseMyCursor
DeallocateMyCursor

注意:其中「張三」為要查找的字元串,可以替換成其他的,如果查詢的字元串超長,需要在定義變數時適當擴大長度。

可以替換成其他的,如果查詢的字元串超長,需要在定義變數時適當擴大長度。

⑷ sql語句 查詢欄位中包含某個數字的列信息

select * from info where (',' + id + ',') like ('%,' + '9' +',%')

⑸ SQL怎麼查詢某一個數字在欄位中

select * from test where value like '4'

你只要用查詢器打開資料庫test
然後輸入上面語句。
搜索結果就會出來了。 。

上面兩個一個創建表和插入數據的。

跟查詢沒關系的。。

⑹ 如何把SQL SERVER中一個含有數字的字元串找出來

在SQL SERVER 2005中,將表中字元串轉換為數字的函數共2個:
1. convert(int,欄位名) 例如:select convert(int,'3')
2. cast(欄位名 as int) 例如:select cast('3' as int)
其實,一般情況下沒有必要把字元串轉換為數字類型
假如需要比較兩個欄位是否相等,但是一個欄位為字元串類型,一個為數字類型,用「=」比較兩個值是否相等時,SQL SERVER會自動把字元串轉換為數字再比較的!
例如:
select da.TITLE_NAME,dsc.NAME
from dbo.DV_DUTY dd
inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA)
left join DV_ASSET da on(da.ID=dd.RECORD_ID and dd.TYPE='2')
where dd.AREA is not null
這個SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID為數字類型,dd.AREA為字元類型,相當於這樣on(1='1')的判斷,這時候就會自動吧字元串的'1'轉換為數字類型再比較的。
但是也有弊端,一旦字元類型轉換為數字類型出錯(說明字元串的確就非數字組成的),SQL就會拋出異常。

SQL SERVER 2005中有判斷欄位是否為數字的函數:
ISNUMERIC(欄位名) -----假如欄位是數字類型返回1,不是就返回0
但是好像有的時候不好使,比如:select isnumeric('3,34') 就返回1
說明這個函數對欄位值中全是數字但是數字間用「,」和「.」(逗號或點)隔開的都視為數字了!

⑺ sql語句 查詢欄位中包含某個數字的列信息

select * from 表 where ','+列4+',' like('%,2,%')
一般情況下,像這種序列填充列,在設計時不會在列中的前後加逗號,可能的數據:
2 或者 2,22 又或者 0,1,2
所以一般放在查詢中人為的給列值前後加逗號,再模糊匹配.

⑻ sql語句中對一個欄位排序,欄位中含有字元串和數字,(怎根據數字進行排序)

order by 欄位名稱+0 desc/asc的形式進行排序
order by 欄位名稱*1 desc/asc的形式進行排序