如何使用SQL从字符串末尾删除数字

时间:2010-04-02 18:48:47

标签: mysql

拜托,你能否回答我的问题。 如何使用SQL从字符串末尾删除数字? 例如,字符串'2Ga4la2009'必须转换为2Ga4la。问题是我们无法修剪它们,因为我们不知道字符串末尾有多少位数。 最好的问候,加林娜。

2 个答案:

答案 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,并且不希望在数据库客户端执行此操作,则可以始终执行以下操作:

  1. 查找结尾第一个字母的位置(例如字符串反向的25个LOCATE中的最小值)

  2. 左行(@string,@ string_length - @ result_of_step_1)

  3. 如果字符串末尾没有任何数字,则不必进行任何特殊处理,因为在这种情况下LOCATE返回0.

    干杯