当前位置:首页 » 编程语言 » sql截取中文
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql截取中文

发布时间: 2022-03-14 00:50:18

sql 怎样截取指定位置的中英文混合体 例如 截取‘我是中国人0001’ 的8 至 14字节

create table #temp( test varchar(20) );
INSERT INTO #temp VALUES('我是中国人0001');
go
SELECT
Convert(char(8), test) AS [0to8],
Convert(char(14), test) AS [0to14],
RIGHT(Convert(char(14), test), LEN(Convert(char(14), test)) - LEN(Convert(char(8), test))) AS [8to14]
FROM
#temp
GO
0to8 0to14 8to14
-------- -------------- --------------
我是中国 我是中国人0001 人0001
(1 行受影响)



SQL Server 2008 Express 下测试通过。

㈡ sqlsever中消除记录中的中文,提取非中文字符

建立函数来处理吧。
createfunctionfun_del_zh
(@colvarchar(1000))
returnsvarchar(1000)
AS
begin
declare@returncharvarchar(1000),@lenint
select@returnchar='',@len=1

while(@len<=len(@col))
begin
if(ASCII(substring(@col,@len,1))<122)
set@returnchar=@returnchar+substring(@col,@len,1)
set@len=@len+1
end
return@returnchar
end
go

selectid,dbo.fun_del_zh(name)nmfromtest;
idnm
test test
test1 test
test2 test2
有问题再追问。

㈢ sql如何从右向左截取中文字符串不乱码

楼下有结局,中文字符串不乱,门都办不到了。我觉得目前来说不是很准确的。

㈣ sql 怎么获取汉字

、Sql语句是操作数据库用的,所以,数据库中没有的东西是没办法调出来的 2、输入品名就会出现相关的简名、名字、拼音、拼音缩写之类的,是通过编程语言来

㈤ sql怎么截取中文部分

代码如下:
CREATE PROCEDURE sp_str
(
IN p_str VARCHAR(50), /*原始字符串*/
IN p_begin_str VARCHAR(50), /*要匹配的起始字符串*/
IN p_end_str VARCHAR(50)) /*要匹配的结束字符串*/
OUT p_result VARCHAR(50)) /*返回结果*/
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE m_len INT DEFAULT 0;
DECLARE m_index INT DEFAULT 0;
/*计算第一个匹配字符串的索引位置*/
select locate(p_begin_str,p_str)+char_length(p_begin_str) into m_index;
/*计算第一个匹配字符串的长度*/
select locate(p_end_str,p_str,m_index) into m_len;
select SUBSTRING(p_str,m_index,m_len-m_index) INTO p_result ;
END;

执行:
CALL sp_str('[]abcd[12345]aa[]ss','abcd[',']',@result);
返回值 @result 为12345
call sp_str('[]abcd[sdww]aa[]ss','abcd[',']',@result);
返回值 @result 为sdww
如果不用存储过程,可以直接写sql语句实现:

代码如下:
select SUBSTRING(
']abcd[12345]111[]',
locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['),
locate(']',']abcd[12345]111[]',CHAR_LENGTH('abcd['))-
(select locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['))
)

㈥ 如何用sql实现如何只提取汉字或者字母的列部分

如何用sql实现如何只提取汉字或者字母的列部分
select * from a where isnumeric(b)
union all
select * from a where NOT isnumeric(b)

--其中b为需要过滤掉的列名

㈦ SQL 向数据库只提取汉字

public string NoHTML(string Htmlstring) //去除HTML标记
{
//删除脚本
Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
//删除HTML
Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);

Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(|#169);", "\xa9", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);

Htmlstring.Replace("<", "");
Htmlstring.Replace(">", "");
Htmlstring.Replace("\r\n", "");
Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();

return Htmlstring;
}

㈧ SQL语句提取出中文的拼音首字母

正好最近收藏了一个 你可以看下思路
--将中文字符串转化成文字首拼音的组合
create function fun_getPY(@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)
set @PY=''
while len(@str)>0
begin
set @word=left(@str,1)
--如果非汉字字符,返回原字符
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
then (select top 1 PY from (
select 'A' as PY,N'骜' as word
union all select 'B',N'簿'
union all select 'C',N'错'
union all select 'D',N'鵽'
union all select 'E',N'樲'
union all select 'F',N'鳆'
union all select 'G',N'腂'
union all select 'H',N'夻'
union all select 'J',N'攈'
union all select 'K',N'穒'
union all select 'L',N'鱳'
union all select 'M',N'旀'
union all select 'N',N'桛'
union all select 'O',N'沤'
union all select 'P',N'曝'
union all select 'Q',N'囕'
union all select 'R',N'鶸'
union all select 'S',N'蜶'
union all select 'T',N'箨'
union all select 'W',N'鹜'
union all select 'X',N'鑂'
union all select 'Y',N'韵'
union all select 'Z',N'咗'
) T
where word>=@word collate Chinese_PRC_CS_AS_KS_WS
order by PY ASC) else @word end)
set @str=right(@str,len(@str)-1)
end
return @PY
end
--函数调用实例:
select dbo.fun_getPY('中华人民共和国AAA01')

/*

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ZHRMGHGAAA01

(1 行受影响)

*/

㈨ SQL截取中文部份

是ORACLE的话,可以考虑:

SQL> select regexp_replace('0005中国文学', '[0-9]', '') from al;

REGEXP_REPLACE('0005中国文学',
------------------------------
中国文学

-----------------------------------
select substr('0006中国文学',5,4) from al;
这个如果前面有 数 是大于 4 的就不对了。
如下:

SQL> select substr('000006中国文学',5,4) from al;

SUBSTR('000006中国文学',5,4)
----------------------------
06中国
--------------------------------------
而这个:
SQL> select regexp_replace('00000005中国文学', '[0-9]', '') from al;

REGEXP_REPLACE('00000005中国文
------------------------------
中国文学

㈩ SQL 怎样截取指定位置的中英文混合体 例如 截取‘我是中国人0001’ 的8 至 14字节

create table #temp( test varchar(20) );
INSERT INTO #temp VALUES('我是中国人0001');
go
SELECT
Convert(char(8), test) AS [0to8],
Convert(char(14), test) AS [0to14],
RIGHT(Convert(char(14), test), LEN(Convert(char(14), test)) - LEN(Convert(char(8), test))) AS [8to14]
FROM
#temp
GO
0to8 0to14 8to14
-------- -------------- --------------
我是中国 我是中国人0001 人0001
(1 行受影响)



SQL Server 下面, 可以这么写。