mysql函数,剥离非字母数字字符&领先和/或尾随“the”

时间:2013-11-22 18:09:54

标签: mysql string user-defined-functions string-comparison

有没有人能帮助一个mysql自定义函数来删除任何非字母数字字符(包括空格)的文本字符串,从开头和/或结尾删除“the”,并使字符串全部大写?

我试图拼凑网络上的各种功能而没有运气。任何肝脏都会非常感激。

根据@Barmar的要求,我已经提供了更多关于我在下面尝试过的内容的信息。虽然我已经尝试了各种各样的东西,但这是我得到的最接近的(从我能说的。)我认为这应该让我删除非字母数字的字符串,但不确定它是否有助于空格并删除“the”从开始和结束。

这是我得到的错误:

  

错误:您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'@Temp VarChar(1000))

这是代码:

Create Function `coverdb`.`stripdown`(@Temp VarChar(1000))
RETURNS VarChar(1000)
AS
Begin

    Declare @KeepValues as varchar(50) = '%[^a-z0-9]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')

    Return @Temp
End

1 个答案:

答案 0 :(得分:0)

似乎你可能想要使用REPLACE()和UPPER()

你可以混合它们

SELECT REPLACE(UPPER(Field),'THE ','')

或添加更复杂的案例以从开始或结束中删除

SELECT UPPER(CASE WHEN Field LIKE 'the %' THEN SUBSTR(Field,5) ELSE Field END) AS UpperredField

尝试各种组合,它可能适合您。