拜托,你能否回答我的问题。 如何使用SQL从字符串末尾删除数字? 例如,字符串'2Ga4la2009'必须转换为2Ga4la。问题是我们无法修剪它们,因为我们不知道字符串末尾有多少位数。 最好的问候,加林娜。
答案 0 :(得分:2)
这似乎有效:
select left( concat('2Ga4la2009','1'), length(concat('2Ga4la2009','1')) - length(convert(convert(reverse(concat('2Ga4la2009','1')),unsigned),char)))
concat('myvalue','1')是为了防止以0结尾的数字。
反向翻转它,所以数字在前面。
内部转换将反转的字符串更改为一个数字,删除尾随的字符。
外部转换将数字部分转回字符,因此您可以获得长度。
现在您知道数字部分的长度,并且您可以使用“left()”函数确定要切断的原始值的字符数。
丑陋,但它确实有效。 : - )
答案 1 :(得分:0)
看看这个:http://www.mysqludf.org/lib_mysqludf_preg/
如果由于某种原因无法使用UDF,并且不希望在数据库客户端执行此操作,则可以始终执行以下操作:
查找结尾第一个字母的位置(例如字符串反向的25个LOCATE中的最小值)
左行(@string,@ string_length - @ result_of_step_1)
如果字符串末尾没有任何数字,则不必进行任何特殊处理,因为在这种情况下LOCATE返回0.
干杯