日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

处理字符串_7_判断字符串是字符串数字型

發(fā)布時(shí)間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 处理字符串_7_判断字符串是字符串数字型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ?判斷字符串是字符串?dāng)?shù)字型

需求描述

需求:檢索temp_str data表的字段data是字符串?dāng)?shù)字類型的記錄這里如果都是字符串或者數(shù)字的也符合條件.

解決方法:這里通過translate、replace、repeate(replicate、rpad)函數(shù)對含數(shù)字的部分進(jìn)行替換.

注: 數(shù)據(jù)庫數(shù)據(jù)集SQL腳本詳見如下鏈接地址

員工表結(jié)構(gòu)和數(shù)據(jù)初始化SQL腳本

SQL代碼

--Sql Server: CREATE TABLE temp_str(data VARCHAR(1000));INSERT INTO temp_str VALUES('SMITH20'); INSERT INTO temp_str VALUES('JONES30'); INSERT INTO temp_str VALUES('Jim#40'); INSERT INTO temp_str VALUES('50$Tom'); INSERT INTO temp_str VALUES('60:Mike'); INSERT INTO temp_str VALUES('70Cruz'); INSERT INTO temp_str VALUES('Jack'); INSERT INTO temp_str VALUES('J8oh0n');-- Sql Server版translate函數(shù)定義詳見如下注釋內(nèi)代碼 /* SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[translate](@string VARCHAR(MAX),@from_str VARCHAR(MAX),@to_str VARCHAR(MAX) ) RETURNS VARCHAR(MAX) AS BEGIN-- 返回將(所有出現(xiàn)的)from_str中的每個(gè)字符替換為to_str中的相應(yīng)字符以后的string。-- TRANSLATE 是 REPLACE 所提供的功能的一個(gè)超集。-- 如果 from_str 比 to_str 長,那么在 from_str 中而不在 to_str 中的額外字符將從 string 中被刪除,因?yàn)樗鼈儧]有相應(yīng)的替換字符。-- to_str 不能為空。-- Oracle 將空字符串解釋為 NULL,并且如果TRANSLATE 中的任何參數(shù)為NULL,那么結(jié)果也是 NULL。IF @string IS NULL OR @from_str IS NULL OR @to_str IS NULLBEGINRETURN NULL;END;-- 源長度與目標(biāo)長度DECLARE @FromLen INT, @ToLen INT;SET @FromLen = LEN(@from_str);SET @ToLen = LEN(@to_str);-- 準(zhǔn)備用于返回的數(shù)值.DECLARE @resultVal VARCHAR(MAX);SET @resultVal = @string;-- 用于存儲(chǔ) 本次需要替換的字符信息.DECLARE @thisTimeReplace CHAR(1);-- 從后向前依次替換.WHILE @FromLen > 0BEGIN-- 取得本次即將要替換的字符.SET @thisTimeReplace = SUBSTRING(@from_str, @FromLen, 1);IF CHARINDEX(@thisTimeReplace, @from_str) < @FromLenBEGIN-- 假如當(dāng)前這個(gè)要替換的字符,在前面還有,那么這里就不替換了-- 原因,為了支持-- SELECT TRANSLATE('2KRW229', '1234567890' || '2KRW229', '1234567890')-- 這樣的效果.-- 向前處理上一個(gè)/*補(bǔ)充說明:1 理論上TRANSLATE函數(shù)的@from_str參數(shù)和@to_str參數(shù)的長度要一致,即一一映射。比如@from_str='0123',@to_str='abcd'2 該步驟旨在找到在@from_str參數(shù)里要替換的的字符重復(fù)指定了,比如'0123XYZ23',這里23是重復(fù)指定了,對于重復(fù)指定的要舍棄所以需要在該步時(shí)需要將@FromLen鎖定到字符Z的位置即7*/SET @FromLen = @FromLen - 1;CONTINUE;ENDIF @FromLen > @ToLenBEGIN-- from_str 比 to_str 長,那么在 from_str 中而不在 to_str 中的額外字符將從 string 中被刪除,因?yàn)樗鼈儧]有相應(yīng)的替換字符。SET @resultVal = REPLACE(@resultVal, SUBSTRING(@from_str, @FromLen, 1), '');ENDELSEBEGIN-- from_str中的每個(gè)字符替換為to_str中的相應(yīng)字符以后的string-- SELECT dbo.TRANSLATE('2KRW229', '12345678902KRS229','12345678902') 這里用S替換時(shí)其實(shí)無效SET @resultVal = REPLACE(@resultVal, @thisTimeReplace, SUBSTRING(@to_str, @FromLen, 1));END;-- 處理完當(dāng)前字符后,向前處理上一個(gè).SET @FromLen = @FromLen - 1;END;-- 依次處理完畢后,返回結(jié)果.RETURN @resultVal;END*/SELECT data --,dbo.translate(UPPER(data),'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',REPLICATE('a',36)) as trans FROM temp_str WHERE dbo.translate(UPPER(data),'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',REPLICATE('a',36))=REPLICATE('a',LEN(data))-- 或者用如下方法,思路通過判斷截取的每個(gè)字符的ASCII值來判斷區(qū)間是否落在[48,57],[97,122],落在的為0,反之為1,然后再通過對該Flag進(jìn)行sum來判斷,如果等于0則說明數(shù)字字符型的.SELECT data -- ,SUM(Flag) FROM ( SELECT LOWER(data) as data,SUBSTRING(e.data,seq.pos,1) AS ename_Split,ascii(SUBSTRING(LOWER(e.data),seq.pos,1)) AS asci, CASE WHEN ascii(SUBSTRING(LOWER(e.data),seq.pos,1)) >= 48 AND ascii(SUBSTRING(LOWER(e.data),seq.pos,1))<=57 THEN 0 WHEN ascii(SUBSTRING(LOWER(e.data),seq.pos,1)) >= 97 AND ascii(SUBSTRING(LOWER(e.data),seq.pos,1))<=122 THEN 0 ELSE 1 END AS Flag FROM temp_str e, (SELECT number AS pos FROM master.[dbo].[spt_values] WHERE type = 'P' AND number>0) seq WHERE seq.pos<=LEN(e.data) -- ORDER BY data )A GROUP BY data HAVING SUM(Flag) = 0--Mysql: SELECT data -- ,translate(UPPER(data),'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',REPEAT('a',36)) AS trans FROM temp_str WHERE translate(UPPER(data),'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',REPEAT('a',36))=REPEAT('a',LENGTH(data))-- 利用正則表達(dá)式來匹配 SELECT data FROM temp_str WHERE data regexp '[^0-9A-Za-z]' = 0-- 待驗(yàn)證Mysql8 WITH RECURSIVE cte (num) AS (SELECT 1UNION ALLSELECT num + 1 FROM cte WHERE num < 100 ) SELECT data -- ,SUM(Flag) FROM ( SELECT LOWER(data) as data,SUBSTRING(e.data,seq.pos,1) AS ename_Split,ascii(SUBSTRING(LOWER(e.data),seq.pos,1)) AS asci, CASE WHEN ascii(SUBSTRING(LOWER(e.data),seq.pos,1)) >= 48 AND ascii(SUBSTRING(LOWER(e.data),seq.pos,1))<=57 THEN 0 WHEN ascii(SUBSTRING(LOWER(e.data),seq.pos,1)) >= 97 AND ascii(SUBSTRING(LOWER(e.data),seq.pos,1))<=122 THEN 0 ELSE 1 END AS Flag FROM temp_str e, (SELECT num FROM cte) seq WHERE seq.pos<=LEN(e.data) -- ORDER BY data )A GROUP BY data HAVING SUM(Flag) = 0

執(zhí)行結(jié)果

總結(jié)

以上是生活随笔為你收集整理的处理字符串_7_判断字符串是字符串数字型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美国产免费 | 一级少妇精品久久久久久久 | 人妻换人妻a片爽麻豆 | 午夜之声l性8电台lx8电台 | 国产欧美一级 | 一级特黄特色的免费大片视频 | av最新网址| av无码一区二区三区 | 欧美视频| 国产黄色免费看 | 无码人妻精品一区二区三区蜜桃91 | www.我爱av| 欧美成人h版 | 欧美极品少妇xxxxⅹ猛交 | 国产视频一区在线播放 | 人妻久久一区二区 | 国产精品免费视频观看 | 在线不欧美 | 草草网址 | 天天影视色 | 国产精品久久久久国产a级 国产一区二区在线播放 | 亚洲特黄一级片 | 伊人综合影院 | 精品人妻一区二区三区久久夜夜嗨 | 午夜写真片福利电影网 | av在线观| 超碰在线一区 | 杨幂一区二区国产精品 | 中文字幕一区二区在线播放 | 亚洲一级黄色 | 午夜影视免费 | 欧美午夜大片 | 亚洲三级欧美 | 在线男人天堂 | 精品少妇v888av | 欧美一级免费 | 中文字幕网站在线观看 | 国产精品日韩一区二区 | 成人a在线| 新香蕉视频 | 欧美精品一区二区三区久久 | 熟妇高潮精品一区二区三区 | 亚洲AV无码国产精品国产剧情 | 国产草草视频 | 美女黄色在线观看 | 中文字幕日韩欧美一区二区 | 久久人人添人人爽添人人片 | 国产日韩在线观看一区 | 最污网站在线观看 | 日日碰日日摸 | 少妇丰满尤物大尺度写真 | 夫妻毛片 | av网站网址 | jizz高潮| 日本高清免费视频 | 日韩国产一区二区三区 | 欧美大色一区 | 少妇久久久久久久 | 欧美色v | 无套内谢88av免费看 | 免费黄色一级 | 黄色免费视屏 | 国产欧美日韩精品一区二区三区 | 亚洲色图 一区二区 | 久久久精品久久久久久 | 国产精品夫妻自拍 | 中国第一毛片 | 久久久免费av | 性三级视频 | 亚洲综合自拍 | 国产精品久久不卡 | 久久亚洲第一 | 超碰人人人人人人 | 国产精选自拍 | 人人搞人人 | 秋霞电影网一区二区 | 91精彩视频 | 国产黄页 | 亚洲最大在线观看 | 亚洲欧美日韩中文字幕在线观看 | 99热超碰 | 最新在线观看av | 国产一区二区三区免费看 | 欧美有码在线 | 亚洲加勒比在线 | 黑人高潮一区二区三区在线看 | 免费毛片看 | 亚洲理论在线 | 精品少妇视频 | 日韩一区二区a片免费观看 伊人网综合在线 | 日韩电影一区二区三区 | 三级无遮挡| 国产视频二区 | 青青草国产一区二区三区 | 中文字幕啪啪 | 日本韩国欧美中文字幕 | 又黄又爽又刺激的视频 | 免费av大全 | av片免费在线|