SQL 怎么提取一个模式的字符串
比如我在STUDENT的TABLE中提取FIRST_NAME栏中,中间有大写的字符串,比如AbcD.,ZhengH.,PetterG.这种,第一步要提取他们,好像用是么I...
比如我在STUDENT 的TABLE中提取FIRST_NAME栏中,中间有大写的字符串,比如Abc D. , Zheng H. ,Petter G.这种,第一步要提取他们,好像用是么INSTR吧,然后需要把后面大写的部分都删掉.请教大家该怎么做?
展开
展开全部
这个通常我的做法有两种方式(sql server,如果你是oracle或是其他的。。。。。。)
第一种,也是我用的最多的,就是用sql server 自身带的一些字符串函数去处理,这种方式需要你自己去分析,做法比较灵活,比如书你这个,如果仅以你这3个示例字段来讲,可以将‘ A.’替换成‘’
update table1 set column1 = REPLACE(column1,' A.','')
然后依次去执行B C ...,但是这么做也是有风险的,需要你了解这一列数据,比如这样做会把小写的‘ a.’也替换掉,这时可能就需要通过collate Chinese_PRC_CS_AS来限定排序规则等方式来处理了,比较灵活,但是需要结合实际案例来做,只是给你一个思路,自己发挥吧。
第二种,这种只是针对sql server了,别的数据库不知道可不可以这么解决。
sql server从2005开始,也是基于.NET平台了,所以可以用C#写一个正则表达式去处理这个问题,如果你对C#和正则表达式了解的话,这个解决起来就十分简单了,而且貌似没有解决不了问题了。
我个人通常都用第一种,用C#去处理,用过几次,在特殊场合有奇效,希望对你有用。
追问
所以按你说的,必须要一条一条逐个修改?不能直接用一个pattern全部一起改?比如用你这个REPLACE(column1,' _.','')这样?这个好像不行,我就是表达一下这个意思。
追答
一次性替换,也行,用我说的第二种方法,用C#写一个,然后部署到sql server中,如果只用sql server完成的话,应该也可以吧,没想到。
这个东西看你怎么看待了,我看你的需求,应该就是一次性的吧,一次性把,执行26次就解决了,总比花了特别长的时间,一直想办法解决成本,如果你这个要反复的使用,可以封装到一个存储过程里面,以后都直接调用过程就行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询