Foxtable(狐表)用户栏目专家坐堂 → SQL中如何提取字符


  共有2002人关注过本帖树形打印复制链接

主题:SQL中如何提取字符

帅哥哟,离线,有人找我吗?
lihe60
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6887 积分:43621 威望:0 精华:0 注册:2009/3/2 14:07:00
SQL中如何提取字符  发帖心情 Post By:2024/6/18 14:23:00 [只看该作者]

字段1
A01
BB1
CCC

上面是数据库,提取“字段1”中字母A、BB、CCC的语句如何写

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111408 积分:567110 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/18 14:26:00 [只看该作者]

sql做不了,只能加载数据后,使用代码逐行处理提取

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6887 积分:43621 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2024/6/18 14:32:00 [只看该作者]

CREATEFUNCTIONDBO.GET_CHINESE(@ StrNVARCHAR100)) RETURNSVARCHAR100AS BEGIN WHILEPATINDEX'%[^吖-座]%',@ Str) > 0 SETStrSTUFF(@ StrPATINDEX'%[^吖-座]%',@ Str), 1,N ''RETURNStr END GO

测试自定义函数

SELECTdbo.GET_CHINESE( 'SQL数1据2库3开4发5')

这个代码有人会解析吗

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:340 积分:5308 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2024/6/19 18:36:00 [只看该作者]

这段代码是T-SQL(Transact-SQL)语言编写的,用于在SQL Server数据库中创建一个名为GET_CHINESE的函数。这个函数的目的是从输入字符串中移除所有非中文字符,只返回一个纯中文字符串。

下面是代码的逐行解释:

CREATE FUNCTION DBO.GET_CHINESE(@Str NVARCHAR(100)) RETURNS VARCHAR(100) AS

这行代码声明了一个新的函数GET_CHINESE,它属于DBO(数据库所有者)架构。这个函数接收一个名为@Str的参数,类型为NVARCHAR,最大长度为100个字符,并返回一个类型为VARCHAR,长度也为100个字符的字符串。

BEGIN

函数定义的开始。

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

WHILE循环开始,条件是PATINDEX函数在@Str中找到至少一个不匹配模式'[^吖-座]%'的位置。这个模式表示任何不是从“吖”到“座”范围内的字符。

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

STUFF函数在这里用于替换@Str中的非中文字符。它从PATINDEX找到的第一个非中文字符的位置开始,替换1个字符为空字符串(即删除该字符)。

RETURN @Str

在循环结束后,返回处理过的字符串。

END

函数定义的结束。GO

执行命令的结束。

这个函数通过循环检查并删除输入字符串中的非中文字符,直到字符串中不再包含这样的字符为止。最终返回的字符串将只包含中文字符。


 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6887 积分:43621 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2024/6/20 14:04:00 [只看该作者]

请解析成foxtable直接使用的语句。

 回到顶部