求个sql,把查询字段的数字全replace掉的语句

buller 2016-01-04 11:12:01
select top 2 cardno,replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(cardno,'0',''),'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''),'8',''),'9',''),id
from mytable..tablename
order by replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(cardno,'0',''),'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''),'8',''),'9','') desc

实现这种功能的语句,能否简洁下?
...全文
328 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdashewan 2016-01-04
  • 打赏
  • 举报
回复
对于单句sql这已经算简洁了,你还想简洁点可以自定义一个function
秋的红果实 2016-01-04
  • 打赏
  • 举报
回复

string str = "kskd233kUAU22%fjdj-中国jfkd99 00 dsUU999siiii";
string outstr="";
Regex Reg = new Regex(@"\D*");
foreach(Match m in Reg.Matches(str))
{
    outstr+=m.ToString();
}

秋的红果实 2016-01-04
  • 打赏
  • 举报
回复
SQL对字符串的处理效率并不是很高,建议先从库里取出字符串,然后在C#里,一个正则搞定,效率高还直观 [code=csharp][/ string str = "kskd233kUAU22%fjdj-中国jfkd99 00 dsUU999siiii"; string outstr=""; Regex Reg = new Regex(@"\D*"); foreach(Match m in Reg.Matches(str)) { outstr+=m.ToString(); } code]
正怒月神 版主 2016-01-04
  • 打赏
  • 举报
回复
如果你有固定格式,那么可以直接用substring截取。 虽然楼主这样写不美观,但是的确是比较简单了。
小小农民 2016-01-04
  • 打赏
  • 举报
回复
创建一个function : DELIMITER $$ CREATE FUNCTION `TranslateStr`(str varchar(1000)) RETURNS varchar(1000) BEGIN set str = replace(str,'1',''); set str = replace(str,'2',''); set str = replace(str,'3',''); set str = replace(str,'4',''); set str = replace(str,'5',''); set str = replace(str,'6',''); set str = replace(str,'7',''); set str = replace(str,'8',''); set str = replace(str,'9',''); set str = replace(str,'0',''); return str; END; $$ DELIMITER 执行查询 select top 2 cardno,TranslateStr(cardno),id from mytable..tablename

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧