access数据库,某字段中有|字符,要删除掉字段开头和字段末尾的|,不在开头和末尾的|予以保留。
请教SQL语句,谢谢!
谢谢两位!二楼语句用了不行,比如原来字段值为“|重装|系统”执行后成了“|重”。下行语句没试,估计是一样道理。
第1个回答 2008-11-11
如果是sqlserver的话方法如下,对应的函数你自己改一个就好了
update talbe_name--表名
set col_name=case--字段名
when substring(col_name,1,1)='|' --如果第一个字符是否为|
then case when substring(col_name,length(col_name)-1,1)='|' then substring(col_name,2,length(col_name)-1) else substring(col_name,2,length(col_name)) end--如果第一个字符是|,则判断最后一个字符是否为|,如果是|,则取字段的第2个到倒数第2个,如果不是|,则取字段的第2个到最后1个
else case when substring(col_name,length(col_name)-1,1)='|' then substring(col_name,1,length(col_name)-1) else substring(col_name,1,length(col_name)) end--如果第一个字符不是|,则判断最后一个字符是否为|,如果是|,则取字段的第1个到倒数第2个,如果不是|,则取字段的第1个到最后1个
end
update talbe_name--表名
set col_name=case--字段名
when substring(col_name,1,1)='|' --如果第一个字符是否为|
then case when substring(col_name,length(col_name)-1,1)='|' then substring(col_name,2,length(col_name)-1) else substring(col_name,2,length(col_name)) end--如果第一个字符是|,则判断最后一个字符是否为|,如果是|,则取字段的第2个到倒数第2个,如果不是|,则取字段的第2个到最后1个
else case when substring(col_name,length(col_name)-1,1)='|' then substring(col_name,1,length(col_name)-1) else substring(col_name,1,length(col_name)) end--如果第一个字符不是|,则判断最后一个字符是否为|,如果是|,则取字段的第1个到倒数第2个,如果不是|,则取字段的第1个到最后1个
end
第2个回答 2008-11-11
substring(|重装|系统.indexof("|"),|重装|系统.lengh)
第3个回答 2008-11-11
substring(字段,2,lengh(字段)-1)
第4个回答 2008-11-11
对不起,刚才是错了,这样就行了:
UPDATE TABLENAME SET FIELDNAME=RIGHT(FIELDNAME,len(fieldname)-1)
WHERE FIELDNAME LIKE '|%'
UPDATE TABLENAME SET FIELDNAME=LEFT(FIELDNAME,LEN(FIELDNAME)-1)
WHERE FIELDNAME LIKE '%|'本回答被提问者采纳
UPDATE TABLENAME SET FIELDNAME=RIGHT(FIELDNAME,len(fieldname)-1)
WHERE FIELDNAME LIKE '|%'
UPDATE TABLENAME SET FIELDNAME=LEFT(FIELDNAME,LEN(FIELDNAME)-1)
WHERE FIELDNAME LIKE '%|'本回答被提问者采纳