SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据
作者&投稿:锺师 (若有异议请与网页底部的电邮联系)
select a.V1,b.V2
from(
select V1, [V2] = CONVERT(xml,'' + REPLACE([V2], ',', '') + '')
from 原表T1
) a
OUTER APPLY(
select V2 = N.v.value('.', 'varchar(100)')
from a.[V2].nodes('/root/v') N(v)
) b
4行变成1行?如果用SQLServer的话,可以用一种很诡异的方法:SELECTDISTINCT','+SALE_ITEMFROMSALE_REPORTFORXMLPATH('')楼主可以测试一下,最后用一个FORXMLPATH('')就好。我上面的SQL执行结果为:,C,A,B
不知道你是什么数据库,如果是Mysql,可以这样(假定含有qq字段的表为t1,另一张表为t2):select `name` from `t2` where find_in_set(`id`, (select `nameid` from `t1` where `qq`=123));
如果是SQLServer,则这样:
select [name] from [t2] where charindex(','+[id]+',',','+(select [nameid] from [t1] where [qq]=123)+',')>0;
如果是ACCESS,则这样:
select [name] from [t2] where instr(',' & (select [nameid] from [t1] where [qq]=123) & ',',',' & [id] & ',')>0;
不明白你的条件的意思,为什么123+1,2条件结果是输出23?
那么换个qq和nameid的话结果又是什么呢?
你先解释清楚这个转换的机制我才好回答你
支饼眠安: 插入数据库数据的语句:INSERT INTO TESTTAB(FIELD1) VALUES('测试')如果插入数据库的字符串中还有单引号,需要转义处理,如插入“It's a tree.”,SQL语句如下:INSERT INTO TESTTAB(FIELD1) VALUES('It''s a dog.')如果SQL中有“&”,那么后面的字符串将被作为一个变量来处理,无法正常插入数据库.如果的确需要把&字符插入数据库,如下处理:INSERT INTO TESTTAB(FIELD1) VALUES('I work in R'||'&'||'D.')
朝阳市13382648701: SQL数据库指定某张表特定字段全部统一增加指定字符 - ?
支饼眠安: 1. 假如表 A 中的B字段 添加指定字符'C'2. SQL 语句如下:update A set B=B+'C'3. 更新A表中所有记录的字段B,并且给B 字段在原来的字符串中加上C4. 不加where 条件,对全表某个字段更新!5. 如果需要条件,请添加where
朝阳市13382648701: 如何将特殊字符存入SQLServer - ?
支饼眠安: 更改数据类型为nvarchar,且插入或更改数据时,引号前+“N”,那么可以插入特殊符号字符,例:更改:UPDATE a SET a.name2=N'b₃'from test a WHERE zid=14插入:INSERT INTO test(name,name2) VALUES(N'º ¹ ² ³ ⁴ ⁿ ₁₂₃₄',N' ‱ ‰ ∜ ∛ ℅ ℁')
朝阳市13382648701: ACCESS 如何使用SQL语句,批量替换表中的特定字符等. - ?
支饼眠安: 语法错误:您用的语法是SQL数据库的,Access中不能用@关键字.字段名如果是传入的字符串,语法为 : '" & 字段名 & "' Access 语法示例:字段名、表名均为参数:strSql= “Select ('" & 字段名 & "') From ('" & 表名 & "')"; 云驰软件
朝阳市13382648701: 怎么样在SQL中替换个字段的特定字符?
支饼眠安: 首先假定的你的表名为“DATA”,你的字段名为“MESSAGE”. 使用以下语句: update DATA set MESSAGE=replace(MESSAGE,'AAAA','BBBB) 这样就会将DATA库中的MESSAGE字段中所有AAAA换成BBBB了.
朝阳市13382648701: 重新理解向Sql2000的表中插入特殊字符? - ?
支饼眠安: 用两个单引号来代表一个单引号! 要插入"'a"就写"''a" 别的同理! 补充: 汗!我说的是"'aaaaaa"这种同理! 别的特殊符号都不需要啊!直接写就好了! sql语句里面只需要转译单引号就好啦! 要插入"#$%^%$@#%$^%$^()"除了单引号直接插入就好咯!再补充:Insert Into tablename Values('a'',a'''); 都给你说了2个单引号代表一个单引号!
朝阳市13382648701: SQL如何将一列表中的字符替换成另外一个字符 - ?
支饼眠安: 用这条语句:update Node set unit='℃' where NodeTypeID=224 and unit='mm'
朝阳市13382648701: sql 语句 如何将一张表里面的名字字段 比如 张某某 变成 张** 或则 张某 变成 站* - ?
支饼眠安: 设表名为TABLENAME,名字字段为NAME,那么这样: UPDATE TABLENAME SET NAME=LEFT(NAME,1)+REPLICATE('*',LEN(NAME)-1) 或者是只查询,改表可是就把NAME原始数据破坏掉了: SELECT NAME=LEFT(NAME,1)+REPLICATE('*',LEN(NAME)-1) FROM TABLENAME第一个字符不变,后面加上NAME字符个数减一个*号
朝阳市13382648701: 数据库插入数据时怎么输出“[]”符号 - ?
支饼眠安: 数据库插入数据时怎么输出“[]”符号 向数据库中插入特殊字符,可以用PreparedStatement实现. 代码如下: ... sql="insert into webPageInfo (webAddrees,content) values(@, #)";PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, thisURL); pstmt.setString(2, Webtext); ResultSet rs = pstmt.executeQuery();
朝阳市13382648701: 如何在数据库表中一个字段所有的值插入一个符号 - ?
支饼眠安: 假设你要在第1个字符后加一个*号 update table set column = substring(column,1,1)+'*' +substring(column,2,len(column))