History表中有一字段smsg,为聊天内容字段,该字段前面部分为字体风格,以‘ \’开始 ‘\C’ 结束,
现在想在Select出的结果中,过滤掉该段字符,请问该如何操作?内容示例:\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨\t3\n宋体\c#000000\C终于成功了~~\t6\n幼圆\c#FF0000\C测试
现在想在Select出的结果中,过滤掉该段字符,请问该如何操作?内容示例:\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨\t3\n宋体\c#000000\C终于成功了~~\t6\n幼圆\c#FF0000\C测试
RIGHT(col,charindex('C',col)-2)
from
tb
go
--> -->
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([COl] nvarchar(32))
Insert #A
select N'\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨' union all
select N'\t3\n宋体\c#000000\C终于成功了 ' union all
select N'\t6\n幼圆\c#FF0000\C测试'
Go
Select STUFF([COl],CHARINDEX('\',[COl]),PATINDEX('%\C[^#]%',[COl])-CHARINDEX('\',[COl])+2,'')
from #A/*
干地未来战士下雨
终于成功了
测试
*/
-- Author :fredrickhu(小F,向高手学习)
-- Date :2011-10-11 10:57:15
-- Version:
-- Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86)
-- Apr 22 2011 11:57:00
-- Copyright (c) Microsoft Corporation
-- Enterprise Evaluation Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([col] varchar(42))
insert [tb]
select '\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨' union all
select '\t3\n宋体\c#000000\C终于成功了~~' union all
select '\t6\n幼圆\c#FF0000\C测试'
--------------开始查询--------------------------
select
RIGHT(col,charindex('c',REVERSE(col))-1)
from
tb
----------------结果----------------------------
/* ------------------------------------------
干地未来战士下雨
终于成功了~~
测试(3 行受影响)*/
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (col varchar(42))
insert into [tb]
select '\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨' union all
select '\t3\n宋体\c#000000\C终于成功了~~' union all
select '\t6\n幼圆\c#FF0000\C测试'--开始查询
select RIGHT(col,len(col)-PATINDEX('%\C[^#]%',col)-1)
from [tb]--结束查询
drop table [tb]/*
------------------------------------------
干地未来战士下雨
终于成功了~~
测试(3 行受影响)