所以我需要更新一个文本字段.UPDATE语句或WRITETEXT语句在下面使用时都不起作用
CREATE TABLE MyTable (IDField int, MyField text)
INSERT INTO MyTable (IDField) SELECT 1
DECLARE @Data1 varchar(8000), @Data2 varchar(8000), @ptrval binary(16)
SELECT @Data1 = REPLICATE('1',8000)
SELECT @Data2 = REPLICATE('2',8000)
-- this sets MyField to string of only 8000 characters
UPDATE MyTable SET MyField = @Data1 + @Data2 WHERE IDField = 1
SELECT @ptrval = TEXTPTR(MyField )
FROM MyTable
WHERE IDField = 1
-- this causes an error: Incorrect syntax near '+'.
--WRITETEXT MyTable.MyField @ptrval @Data1 + @Data2
Run Code Online (Sandbox Code Playgroud)
当局部变量不能是TEXT类型时,我该怎么做呢?(如果我有SSQL Server 2005,我会使用varchar(max) …
我使用SQL Server 2000.
假设我有两个表,如下所示:
Area
----------------------------------
ID| Name | HierarchyLevel
----------------------------------
1 | World | 1
2 | America| 2
3 | Europe | 2
4 | Africa | 2
5 | USA | 3
Run Code Online (Sandbox Code Playgroud)
和
AreaHierarchy
------------------------
ID | ParentID | ChildID
------------------------
1 | 1 | 2
2 | 1 | 3
3 | 1 | 4
4 | 2 | 5
Run Code Online (Sandbox Code Playgroud)
哪里
AreaHierarchy.ParentID和AreaHierarchy.ChildID是Area.ID的FK
我怎样才能找到美国的第n位父母?
没有循环可能吗?
可能不是.
这是场景.有问题的列称为'datein',它的类型是'datetime'.对于'datein',我有三行,值为'2009-10-01 00:00:00.000'.为什么此查询返回上述行?
SELECT *
FROM t_call AS tc
WHERE tc.datein >= '2009-09-30 00:00:00.000'
AND tc.datein <= '2009-09-30 23:59:59.999'
Run Code Online (Sandbox Code Playgroud)
运用
SELECT *
FROM t_call AS tc
WHERE tc.datein BETWEEN '2009-09-30 00:00:00.000'
AND '2009-09-30 23:59:59.999'
Run Code Online (Sandbox Code Playgroud)
返回相同的结果
我正在尝试更新列中的所有记录,以便它们以"CD"开头,例如DCE206将成为CDE206.
UPDATE table
SET column = REPLACE(column1, 'DC', 'CD')
WHERE column1 LIKE 'DC%'
Run Code Online (Sandbox Code Playgroud)
我使用上面的更新语句,但出现以下错误
'子查询返回的值超过1.当子查询跟随=,!=,<,<=,>,> =或子查询用作表达式时,不允许这样做.
有什么我可以在声明中更改以实现这一点,或者我需要调查使用游标.
我正在使用SQL Server 2000.
在将SQL查询嵌入到多次调用SQL for Table Updates的应用程序中时,是否可以使用SQL BEGIN TRANSACTION,COMMIT TRANSACTION,ROLLBACK TRANSACTION.例如,我有以下代码:
Q.SQL.ADD(<UPDATE A RECORD>);
Q.ExecSQL;
Q.Close;
Q.SQL.Clear;
Q.SQL.ADD(<Select Some Data>);
Q.Open;
Run Code Online (Sandbox Code Playgroud)
设置一些变量
Q.Close;
Q.SQL.Clear;
Q.SQL.ADD(<UPDATE A RECORD>);
Q.ExecSQL;
Run Code Online (Sandbox Code Playgroud)
我想要做的是如果第二次更新失败,我想回滚第一个事务.
如果我为BEGIN,COMMIT,ROLLBACK设置一个唯一的表示法,以便指定提交或回滚的内容,是否可行.
即在第一次更新之前指定BEGIN TRANSACTION_A然后在上次更新后指定COMMIT TRANSACTION_A
我希望这是有道理的.如果我在SQL存储过程中执行此操作,那么我将能够在过程的开始和结束时指定它,但由于进程块和重载SQL上的死锁,我不得不将代码分解为可管理的块服务器.
我想做的是这样的事情
DECLARE @operator nvarchar;
SET @operator = 'AND'
SELECT * FROM MyTable
WHERE first_column = "1" @operator second_columnt = "2"
Run Code Online (Sandbox Code Playgroud)
有没有办法实现像那样的逻辑?
从SQL Server 2000将数据导出到Excel的最简单方法是什么?
我想从我可以输入查询分析器的命令中执行此操作.
我希望列名出现在第1行.
我有一个流程,我不想跟踪某些内容是创建还是更新.跟踪会很复杂.我想执行创建或更新.架构就像......
col1 varchar() (PK)
col2 varchar() (PK)
col3 varchar() (PK)
col4 varchar()
Run Code Online (Sandbox Code Playgroud)
我正在考虑做
TRY
{
INSERT ...
}
CATCH(DuplicateKeyException)
{
UPDATE ...
}
Run Code Online (Sandbox Code Playgroud)
你有什么建议?
我想确保我理解其他最高投票的答案.鉴于我的模式,UPDATE总是会发生(即使使用INSERT),但插入只发生在它不存在的地方?
//UPSERT
INSERT INTO [table]
SELECT [col1] = @col1, [col2] = @col2, [col3] = @col3, [col4] = @col4
FROM [table]
WHERE NOT EXISTS (
-- race condition risk here?
SELECT 1
FROM [table]
WHERE [col1] = @col1
AND [col2] = @col2
AND [col3] = @col3
)
UPDATE [table]
SET [col4] = @col4
WHERE [col1] = @col1 …Run Code Online (Sandbox Code Playgroud) 使用SQL Server 2000
使用浮点数时不显示零.
询问
insert into table1 values ('01.10')
insert into table1 values ('10.50')
insert into table1 values ('02.02')
Run Code Online (Sandbox Code Playgroud)
产量
Values (datatype is float)
01.1
10.5
02.02
...
Run Code Online (Sandbox Code Playgroud)
如何显示最后的零
预期产出
值(数据类型为float)
01.10
10.50
02.02
...
Run Code Online (Sandbox Code Playgroud) 有一个Union All查询,如下所示.在SQL Server中触发时,我收到错误
"无法解决SELECT语句中第1列的排序规则冲突."
请问,在哪里可以使用此Union All查询添加Collate database_default语句?
select OrgCode,null as OrgName,
Q1_A1 as A1Value,Q1_a2 as A2Value,'Quarter 1' as dt,((Q1_A1-Q1_A2)/case when Q1_A1<>0 then Q1_A1 else null end )*100 Percentage
from #Tabl_Quarter_Calculation
union all
select OrgCode,null as OrgName,Q2_A1 as A1Value,Q2_a2 as A2Value,'Quarter 2' as dt,((Q2_A1-Q2_A2)/case when Q2_A1=0 then null else Q2_A1 end )*100 Percentage
from #Tabl_Quarter_Calculation
union all
select [OrgCode],[OrgName],a1Value,a2Value,dt
,cast((a1value-a2value)/cast(a1value as real)*100 as varchar(10))+'%' Percentage
from #Tbl_Display1
union all
--4 week average
select [OrgCode],[OrgName],sum(a1Value) as a1Value,Sum(a2Value) as a2Value,max(dt) as dt
,cast((sum(a1value)-sum(a2value))/cast(sum(a1value) …Run Code Online (Sandbox Code Playgroud) sql-server-2000 ×10
sql-server ×8
sql ×6
t-sql ×4
delphi ×1
operators ×1
sql-update ×1
subquery ×1
upsert ×1