我读取数据库表的某条记录的某个值VARCHAR(8000)
比如我得到了数据如下:
afdagag你好么adgagw我很开心sagffk;k我在杭州asdf
我要查询得到
英文字段1,中文字段2,英文字段3,中文字段4 等等(根据获得的结果增加字段。)对应的值分别是英文对英文,中文对中文
比如我得到了数据如下:
afdagag你好么adgagw我很开心sagffk;k我在杭州asdf
我要查询得到
英文字段1,中文字段2,英文字段3,中文字段4 等等(根据获得的结果增加字段。)对应的值分别是英文对英文,中文对中文
解决方案 »
- odbc问题
- 怎么把数据和日志文件分开在不同盘上?
- 如何设计查询将两个表合并
- 如何找出产品图片编号最小值?
- 经常看到一些 sp_monitor sp_help 这是什么意思 不家在查询中我为什么不能像声明变量比如 int mydate,youdate (其它问题内详)
- 在线等待(急),提问:windowsXP的操作系统,是不是没有办法安装SQLSERVER数据库服务器,只能装客户端
- 在删除有自动加1表中的数据后如何让其从1开始计数(不好意思,没分了)
- sql2000,10005错误,过段时间,PB程序就会连不上数据库,重起PB程序就好了,求救啊
- SSIS如何通过SSRS导出excel
- 各位老大,方案求助,其实挺简单的,进者有分。
- 求sql
- 关于sql的问题
DECLARE @i int
DECLARE @cut int
DECLARE @s nvarchar(300)
DECLARE @tbl TABLE
(id int ,
pos varchar(32))
DECLARE @tbl_2 TABLE
(id int ,
pos varchar(32))
SET @str = 'xyz沈亮r上海r中国城市sed魔兽争霸hi努力奋斗awk中国历史shenl'
SET @i = 1
SELECT @cut = LEN(@str)
WHILE @i <= @cut
BEGIN
SELECT @s = SUBSTRING(@str,@i,1)
IF ASCII(@s) <= 122
BEGIN
INSERT INTO @tbl VALUES(@i,@s)
END
IF ASCII(@s) > 122
BEGIN
INSERT INTO @tbl_2 VALUES(@i,@s)
END SET @i = @i + 1END
--SELECT * INTO #Ch FROM @tblSELECT *
INTO #Shenl FROM (
SELECT id,pos, Range = id - Num
FROM(
SELECT id,pos,Num = ROW_NUMBER()OVER(ORDER BY id) FROM @tbl a)B )CSELECT *
INTO #Liang FROM (
SELECT id,pos, Range = id - Num
FROM(
SELECT id,pos,Num = ROW_NUMBER()OVER(ORDER BY id) FROM @tbl_2 a)B )C
SELECT *,New_Word = REPLACE(pos,'||',''),Type = 'EngLish'
FROM
(SELECT DISTINCT Range
FROM #Shenl )A
OUTER APPLY
(
SELECT pos = STUFF(REPLACE(REPLACE(REPLACE(REPLACE(
(SELECT pos
FROM #Shenl N
WHERE A.Range = N.Range
AND pos IS NOT NULL
FOR XML AUTO),'<N pos="','||'),'"/>',''),'<',''),'>',''),1,2,''))NUNION ALLSELECT *,New_Word = REPLACE(pos,'||',''),Type = 'Chinese'
FROM
(SELECT DISTINCT Range
FROM #Liang )A
OUTER APPLY
(
SELECT pos = STUFF(REPLACE(REPLACE(REPLACE(REPLACE(
(SELECT pos
FROM #Liang N
WHERE A.Range = N.Range
AND pos IS NOT NULL
FOR XML AUTO),'<N pos="','||'),'"/>',''),'<',''),'>',''),1,2,''))NDROP TABLE #Shenl
DROP TABLE #Liang--2)结果New_Word Typexyz EngLish
r EngLish
r EngLish
sed EngLish
hi EngLish
awk EngLish
shenl EngLish
沈亮 Chinese
上海 Chinese
中国城市 Chinese
魔兽争霸 Chinese
努力奋斗 Chinese
中国历史 Chinese
功能:实现split功能的函数
*/create function dbo.fn_split
(
@inputstr varchar(8000),
@seprator varchar(10)
)
returns @temp table (a varchar(200))
as begin
declare @i intset @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
endif @inputstr <> '\'
insert @temp values(@inputstr)return
end
go--调用declare @s varchar(1000)set @s='1,2,3,4,5,6,7,8,55'select * from dbo.fn_split(@s,',')drop function dbo.fn_split