sql server2000 关于表列转换的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server2000 关于表列转换的问题相关的知识,希望对你有一定的参考价值。
大家帮帮忙啊 我有个难题 实在不知道改如何处理了
我有个表一 其中有一列time表示时间,另外一列是日期 一列是人名
举例:settledate time name
20090807 153125 小王
20090807 192817 小王
如今我想转换成另外一个表的样式:
settledate starttime endtime name
20090807 153125 192817 小王
请问 这样的表转换改如何去做啊 摆脱了大家 谁可以帮帮俺啊
再用游标,先排序,排序规则如下
名字、日期、时间。
然后用游标逐个访问,奇数的时候,不动,记住这条记录的主键,然后访问下一条记录,update刚才记住主键的那条记录,endtime改成本条记录的时间。
代码就不给你写了,游标写出来挺多的,楼主也不给加分,呵呵,不厚道啊 参考技术A select
max(settledate) as 'settledate',
min(time) as starttime,
max(time) as endtime,
name
from 表名
group by name
不过个人建议你的原来的表最好加个字段IsEnd,
0表示开始,1表示结束,这样更好。本回答被提问者采纳
如何替换 SQL Server 表列中的字符串
【中文标题】如何替换 SQL Server 表列中的字符串【英文标题】:How to replace a string in a SQL Server Table Column 【发布时间】:2010-10-23 07:23:23 【问题描述】:我有一个引用路径(UNC
或其他)的表(SQL Sever
),但现在路径将发生变化。
在路径列中,我有很多记录,我只需要更改路径的一部分,而不是整个路径。而且我需要在每条记录中将相同的字符串更改为新字符串。
如何使用简单的update
做到这一点?
【问题讨论】:
【参考方案1】:就这么简单:
update my_table
set path = replace(path, 'oldstring', 'newstring')
【讨论】:
如果有很多数据,我通常会添加where path like '%oldstring%'
。
where 条件有意义,因为如果我在表中有 50 行并且如果我用替换函数替换 10 行,它会影响所有 50 行,即使如果你没有 where 条件它会替换 10 行。但是,如果您有上面评论中提到的 where 条件,它只会影响 10 行。【参考方案2】:
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
【讨论】:
抱歉,十年后不要吹毛求疵,但从答案中不清楚是foo
被替换还是bar
(再次抱歉)【参考方案3】:
我尝试了上述方法,但没有产生正确的结果。以下是:
update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'
【讨论】:
这完全违背了使用replace方法的目的。你可以像这样完成同样的事情:update table set path='newstring' where path='oldstring'; 也许你的意思是where path like '%oldstring%'
?【参考方案4】:
UPDATE CustomReports_Ta
SET vchFilter = REPLACE(CAST(vchFilter AS nvarchar(max)), '\\Ingl-report\Templates', 'C:\Customer_Templates')
where CAST(vchFilter AS nvarchar(max)) LIKE '%\\Ingl-report\Templates%'
没有CAST
函数我得到一个错误
ntext
函数的参数 1 的参数数据类型无效。
【讨论】:
【参考方案5】:你可以使用这个查询
update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%'
【讨论】:
【参考方案6】:所有答案都很好,但我只想给你一个很好的例子
select replace('this value from table', 'table', 'table but updated')
此 SQL 语句将替换单词“table”的存在 (第二个参数)在给定语句中(第一个参数)和第三个参数
初始值为this value from table
,但在执行替换功能后将是this value from table but updated
这是一个真实的例子
UPDATE publication
SET doi = replace(doi, '10.7440/perifrasis', '10.25025/perifrasis')
WHERE doi like '10.7440/perifrasis%'
例如,如果我们有这个值
10.7440/perifrasis.2010.1.issue-1
会变成
10.25025/perifrasis.2010.1.issue-1
希望这能给你更好的可视化
【讨论】:
【参考方案7】:select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable
“ImagePath”是我的列名。“NewImagePath”是临时的 “ImagePath”“~/”的列名称是我当前的字符串。(旧 字符串)“../”是我需要的字符串。(新字符串) “tblMyTable”是我在数据库中的表。
【讨论】:
【参考方案8】:如果目标列类型不是text之类的varchar/nvarchar,我们需要将列值转换为字符串,然后将其转换为:
update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'
【讨论】:
【参考方案9】:您需要借助替换功能替换路径。
update table_name set column_name = replace(column_name, 'oldstring', 'newstring')
这里column_name
指的是您要更改的那一列。
希望它会起作用。
【讨论】:
【参考方案10】:您还可以在运行时替换电子邮件模板的大文本,这是一个简单的示例。
DECLARE @xml NVARCHAR(MAX)
SET @xml = CAST((SELECT [column] AS 'td','',
,[StartDate] AS 'td'
FROM [table]
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
select REPLACE((EmailTemplate), '[@xml]', @xml) as Newtemplate
FROM [dbo].[template] where id = 1
【讨论】:
以上是关于sql server2000 关于表列转换的问题的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2008转换成sql 2000数据库如何操作?
将查询从 SQL Server 转换为 Access 2000
如何在 SQL Server 2000/2005/2008 中使用 FLOAT 转换小数位数
sql server2000中CONVERT中各个参数的意思