这是我使用的python函数示例。是否可以/实际使用在mysql存储过程中编写的类似函数?
import itertools
import jellyfish
def dropdup(mystr):
mytuple=tuple(set(mystr.lower().split()))
newtup=list()
for i in mytuple:
i=i.replace('tha', 'ta')
i = i[:-3] if i.endswith('bai') else i
newtup.append(''.join(i for i, _ in itertools.groupby(i)))
newtup.sort()
try:
return ''.join(jellyfish.soundex(i) for i in newtup)
except:
return NULL
此python函数按预期工作,它返回给定字符串中每个单词的soundex值。例如,
dropdup('Shantanu Shantanu Prabhakar Oak')
'o200p612s535'
dropdup('Oak Santanu Prabhakar')
'o200p612s535'
MySQL有内置的soundex函数,但是我可以复制字符串操作python方法,比如删除和重复删除几个字符吗?
mysql> select concat( soundex('oak'), soundex('prabhakar'), soundex('shantanu')) as dropdup;
+---------------+
| dropdup |
+---------------+
| O200P6126S535 |
+---------------+
1 row in set (0.00 sec)
使用存储过程进行字符串操作是否有任何优点/缺点?什么是最佳做法?