sql server2000 关于表列转换的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server2000 关于表列转换的问题相关的知识,希望对你有一定的参考价值。

大家帮帮忙啊 我有个难题 实在不知道改如何处理了
我有个表一 其中有一列time表示时间,另外一列是日期 一列是人名
举例:settledate time name
20090807 153125 小王
20090807 192817 小王
如今我想转换成另外一个表的样式:
settledate starttime endtime name
20090807 153125 192817 小王

请问 这样的表转换改如何去做啊 摆脱了大家 谁可以帮帮俺啊

好办,简单易懂的办法就是:先把表曾那个价一个endtime字段,
再用游标,先排序,排序规则如下
名字、日期、时间。
然后用游标逐个访问,奇数的时候,不动,记住这条记录的主键,然后访问下一条记录,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中各个参数的意思

关于非规范化。我怎样才能使这个查询更短或更好? (SQL SERVER 2000)[关闭]

更新 SQL Server 2005 中的表列