MYSQL版:
drop FUNCTION if EXISTS test.chstr;-- test为库名
CREATE FUNCTION test.chstr(s VARCHAR(255)) RETURNs VARCHAR(255)
BEGIN
DECLARE t_char VARCHAR(255);
declare t_out VARCHAR(255);
DECLARE i int;
set t_out='';
set i=CHAR_LENGTH(s);
WHILE i>0 do
set t_char=SUBSTR(s,i,1);
if LENGTH(t_char)=3 then
set t_out=CONCAT(t_char,t_out);
END if;
set i=i-1;
end WHILE;
RETURN(t_out);
end
SQLSERVER版:
--截取所有中文字符,原理是中文字符字节长度为2,核心判断语句引自@fcuandy
CREATE FUNCTION chstr(@s NVARCHAR(255))
RETURNs NVARCHAR(255)
AS
BEGIN
DECLARE @in VARCHAR(255),@out VARCHAR(255)
set @in=@s
set @out=''
WHILE LEN(@in)>0
SELECT @out=CASE WHEN DATALENGTH(RIGHT(@in,1))=2 THEN RIGHT(@in,1) ELSE '' END + @out,@in=LEFT(@in,LEN(@in)-1)
RETURN (@out)
end
运行后创建了一个方法chstr(),若s=‘312给付对价jerj大概3173’,则chstr(s)='给付对价大概'