以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQL中如何提取字符 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192369) |
-- 作者:lihe60 -- 发布时间:2024/6/18 14:23:00 -- SQL中如何提取字符 字段1 A01 BB1 CCC 上面是数据库,提取“字段1”中字母A、BB、CCC的语句如何写
|
-- 作者:有点蓝 -- 发布时间:2024/6/18 14:26:00 -- sql做不了,只能加载数据后,使用代码逐行处理提取 |
-- 作者:lihe60 -- 发布时间:2024/6/18 14:32:00 -- CREATEFUNCTIONDBO.GET_CHINESE(@ StrNVARCHAR( 100)) RETURNSVARCHAR( 100) AS BEGIN WHILEPATINDEX( \'%[^吖-座]%\',@ Str) > 0 SET@ Str= STUFF(@ Str, PATINDEX( \'%[^吖-座]%\',@ Str), 1,N \'\') RETURN@ Str END GO 测试自定义函数 这个代码有人会解析吗
|
-- 作者:hongsejiyi -- 发布时间: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 -- 发布时间:2024/6/20 14:04:00 -- 请解析成foxtable直接使用的语句。 |