MySQL中SELECT的TRIM在独立查询有效但存储过程失效问题
解决存储过程中TRIM函数被当作字段名的问题
给修剪后的字段指定明确别名
这是最直接的解决办法。你原来的语句大概率没给TRIM处理后的字段加别名,导致存储过程解析时把整个trim(LastName)当成了新表的字段名。修改后的语句应该是:CREATE TABLE 目标表名 SELECT trim(LastName) AS LastName, trim(FirstName) AS FirstName, -- 其他需要同步的字段 FROM 惩教数据库源表名;用
AS指定别名后,存储过程会先执行TRIM修剪操作,再把结果存入对应别名的字段,不会再把函数表达式误判为字段名。明确指定TRIM的修剪字符(适配部分数据库)
有些数据库对TRIM函数的默认解析可能存在差异,你可以明确指定要修剪的空格字符,进一步避免歧义:trim(' ' FROM LastName) AS LastName这种写法在MySQL、PostgreSQL等多数数据库中都能正常生效,也能减少存储过程解析时的误解。
适配数据库专属的修剪函数
如果是SQL Server这类数据库(旧版本无原生TRIM函数),需要用LTRIM(RTRIM(字段名))组合来去除前后空格,换成这个写法试试:LTRIM(RTRIM(LastName)) AS LastName
内容的提问来源于stack exchange,提问作者TARKUS
相关产品推荐
相关产品推荐

