我有如下所示的示例数据:
| fname|lname|
| --------------|--------------|
| x abc|jkn|
| 测试|测试GTH|
| YG-TXS|GB@y|
需要将简单查询写入
- 删除所有特殊字符和空格,
- 联系fname和lname
- 将其放在fullname列中,而此字段中包含的值必须没有空格和特殊字符。
需要优化查询,因为我们有数百万的数据。
“* 预期输出 *":
| fname|lname|全名|
| --------------|--------------|--------------|
| x abc|jkn|Xabcjkn|
| 测试|测试GTH|测试testgth|
| YG-TXS|GB@y|ygtxsgby|
我试过下面,它没有工作:
REGEXP_REPLACE({column}, '[^0-9a-zA-Z ]', '')
(REPLACE(CONCAT(fname,lname), '[$!&*_;:@#+\'=%^,<.>/?|~-]', '')
2条答案
按热度按时间rta7y2nd1#
正如在评论部分已经指出的那样,您的问题与regex中存在的空间有关。此外,如果您的要求是名字和姓氏之间没有空格,那么仅使用一次
REGEXP_REPLACE
可能会给予您的效率提高幅度。输出:
检查演示here。
注意:如果您不能使用
REGEXP_REPLACE
命令,您应该请求您的提供程序的权限。只要您正在处理数百万个数据并需要优化的解决方案,这一点就非常重要。fnvucqvd2#
您只需要删除
REGEX
上的空间,其余的看起来都很好Schema(MySQL v8.0)
查询#1