一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SQL Server 提取數字、提取英文、提取中文的sql語句

SQL Server 提取數字、提取英文、提取中文的sql語句

2020-04-09 22:09MSSQL教程網 Sql Server

這篇文章主要介紹了SQL Server 提取數字、提取英文、提取中文 ,需要的朋友可以參考下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

--SQL 判斷字段值是否有中文

create function fun_getCN(@str nvarchar(4000)) 

returns nvarchar(4000) 

 as

 begin

 declare @word nchar(1),@CN nvarchar(4000) 

 set @CN=''

 while len(@str)>0 

 begin

 set @word=left(@str,1) 

 if unicode(@word) between 19968 and 19968+20901

   set @CN=@CN+@word

 set @str=right(@str,len(@str)-1) 

 end

 return @CN 

 end

select dbo.fun_getCN('ASDKG論壇KDL')

--論壇

select dbo.fun_getCN('ASDKG論壇KDL')

--論壇

select dbo.fun_getCN('ASDKDL')

--空

 

-------------------------------------

--提取數字

IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL

DROP FUNCTION DBO.GET_NUMBER2

GO

CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))

RETURNS VARCHAR(100)

AS

BEGIN

WHILE PATINDEX('%[^0-9]%',@S) > 0

BEGIN

set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')

END

RETURN @S

END

GO

--測試

PRINT DBO.GET_NUMBER('呵呵ABC123ABC')

GO

--123

 

--------------------------------------------------------------------

--提取英文

IF OBJECT_ID('DBO.GET_STR') IS NOT NULL

DROP FUNCTION DBO.GET_STR

GO

CREATE FUNCTION DBO.GET_STR(@S VARCHAR(100))

RETURNS VARCHAR(100)

AS

BEGIN

WHILE PATINDEX('%[^a-z]%',@S) > 0

BEGIN

set @s=stuff(@s,patindex('%[^a-z]%',@s),1,'')

END

RETURN @S

END

GO

--測試

PRINT DBO.GET_STR('呵呵ABC123ABC')

GO

 

--------------------------------------------------------------------

--提取中文

IF OBJECT_ID('DBO.CHINA_STR') IS NOT NULL

DROP FUNCTION DBO.CHINA_STR

GO

CREATE FUNCTION DBO.CHINA_STR(@S NVARCHAR(100))

RETURNS VARCHAR(100)

AS

BEGIN

WHILE PATINDEX('%[^吖-座]%',@S) > 0

SET @S = STUFF(@S,PATINDEX('%[^吖-座]%',@S),1,N'')

RETURN @S

END

GO

PRINT DBO.CHINA_STR('呵呵ABC123ABC')

GO

 

--------------------------------------------------------------------

--過濾重復字符

IF OBJECT_ID('DBO.DISTINCT_STR') IS NOT NULL

DROP FUNCTION DBO.DISTINCT_STR

GO

CREATE FUNCTION DBO.DISTINCT_STR(@S NVARCHAR(100),@SPLIT VARCHAR(50))

RETURNS VARCHAR(100)

AS

BEGIN

IF @S IS NULL RETURN(NULL)

DECLARE @NEW VARCHAR(50),@INDEX INT,@TEMP VARCHAR(50)

IF LEFT(@S,1)<>@SPLIT

SET @S = @SPLIT+@S

IF RIGHT(@S,1)<>@SPLIT

SET @S = @S+@SPLIT

WHILE CHARINDEX(@SPLIT,@S)>0 AND LEN(@S)<>1

BEGIN

SET @INDEX = CHARINDEX(@SPLIT,@S)

SET @TEMP = LEFT(@S,CHARINDEX(@SPLIT,@S,@INDEX+LEN(@SPLIT)))

IF @NEW IS NULL

SET @NEW = ISNULL(@NEW,'')+@TEMP

ELSE

SET @NEW = ISNULL(@NEW,'')+REPLACE(@TEMP,@SPLIT,'')+@SPLIT

WHILE CHARINDEX(@TEMP,@S)>0

BEGIN

SET @S=STUFF(@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT),CHARINDEX(@SPLIT,@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT))-CHARINDEX(@TEMP,@S),'')

END

END

RETURN RIGHT(LEFT(@NEW,LEN(@NEW)-1),LEN(LEFT(@NEW,LEN(@NEW)-1))-1)

END

GO

PRINT DBO.DISTINCT_STR('A,A,B,C,C,B,C,',',')

--A,B,C

GO

 

--------------------------------------------------------------------

--過濾重復字符2

IF OBJECT_ID('DBO.DISTINCT_STR2') IS NOT NULL

DROP FUNCTION DBO.DISTINCT_STR2

GO

CREATE FUNCTION DBO.DISTINCT_STR2(@S varchar(8000))

RETURNS VARCHAR(100)

AS

BEGIN

IF @S IS NULL RETURN(NULL)

DECLARE @NEW VARCHAR(50),@INDEX INT,@TEMP VARCHAR(50)

WHILE LEN(@S)>0

BEGIN

SET @NEW=ISNULL(@NEW,'')+LEFT(@S,1)

SET @S=REPLACE(@S,LEFT(@S,1),'')

END

RETURN @NEW

END

GO

SELECT DBO.DISTINCT_STR2('AABCCD')

--ABCD

GO

 

--------------------------------------------------------------------

IF OBJECT_ID('DBO.SPLIT_STR') IS NOT NULL

DROP FUNCTION DBO.SPLIT_STR

GO

CREATE FUNCTION DBO.SPLIT_STR(

@S varchar(8000),   --包含多個數據項的字符串

@INDEX int,       --要獲取的數據項的位置

@SPLIT varchar(10)   --數據分隔符

)

RETURNS VARCHAR(100)

AS

BEGIN

IF @S IS NULL RETURN(NULL)

DECLARE @SPLITLEN int

SELECT @SPLITLEN=LEN(@SPLIT+'A')-2

WHILE @INDEX>1 AND CHARINDEX(@SPLIT,@S+@SPLIT)>0

SELECT @INDEX=@INDEX-1,@S=STUFF(@S,1,CHARINDEX(@SPLIT,@S+@SPLIT)+@SPLITLEN,'')

RETURN(ISNULL(LEFT(@S,CHARINDEX(@SPLIT,@S+@SPLIT)-1),''))

END

GO

PRINT DBO.SPLIT_STR('AA|BB|CC',2,'|')

--

GO

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 波多野 在线 | 99久久精品免费看国产一区二区 | 无人区在线观看免费观看 | 欧美日韩亚洲第一区在线 | 网站视频免费 | 99成人| 嗯啊好大好粗 | 亚洲视频免费在线看 | 国产日韩一区二区三区在线播放 | 国产精品视频色拍拍 | 日本在线一区二区 | 91久久综合九色综合欧美98 | 美日韩在线观看 | 男同桌扒开女同桌胸罩喝奶 | 日韩欧美国产在线 | 香蕉eeww99国产精选播放 | 国产精品欧美亚洲韩国日本 | 欧美日韩亚洲区久久综合 | 亚洲国产第一区二区香蕉日日 | 粗暴hd另类另类 | 亚洲国产欧美久久香综合 | www.5151淫| 91精品国产91久久久久 | 精品久久久久久亚洲精品 | 奇米影视久久 | 啪啪模拟器 | 国产清纯女高中生在线观看 | 男生操女生漫画 | 人体欣赏孕妇季玥图片 | 色先锋影音资源 | 国产91青青成人a在线 | 成 人 免费 小说在线观看 | 97视频久久久 | ssni-497新任美脚女教师 | 高h辣文小说网 烧书阁 | 午夜福利理论片在线播放 | 极品主播的慰在线播放 | 俄罗斯男男激情1069gay | 四虎综合九九色九九综合色 | 男人懂得网站 | 精品人伦一区二区三区潘金莲 |