当前位置:首页 » 编程语言 » sql换座位
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql换座位

发布时间: 2022-07-05 17:43:49

‘壹’ sql 语句 修改

用update 触发器
思路:
1、小位置号改成大位置号,则两个位置号之间的值-1(不包括更新的位置号)
如:
21 1
22 2
23 3
24 4
将22的位置号改为4,则2和4之间的位置号(不包括编号22的位置号)都减一变成:
21 1
22 4
23 2
24 3
2、大位置号改成小位置号,则两个位置号之间的值+1(不包括更新的位置号)
如:
21 1
22 2
23 3
24 4
将24的位置号改为1,则1和4之间的位置号(不包括编号24的位置号)都加一变成:
21 2
22 3
23 4
24 1
更新出发器如下:
create TRIGGER udt_tableu
ON table
FOR update AS

declare @palceNo_i int
declare @palceNo_d int
declare @no_i varchar(10)

select @palceNo_i= 位置 from inserted
select @no_i = 编号 from inserted
select @palceNo_d= 位置 from deleted

if update(位置)
begin
if @palceNo_i> @palceNo_d
begin
update 表 set 位置=位置-1
where 位置 between @palceNo_d and @palceNo_i and 编号<>@no_i
end
else if @palceNo_i< @palceNo_d
begin
update 表 set 位置=位置+1
where 位置 between @palceNo_i and @palceNo_d and 编号<>@no_i
end
end
GO

‘贰’ SQL值互换位置

update table set A=2,B=1 where A=1 and B=2;

‘叁’ 用sql表值函数实现字符串的位置调换

创建

createfunction[dbo].wei
(@scodevarchar(10))
Returnsvarchar(10)
As
Begin
Declare@lenint
Declare@tvarchar(10)
select@len=len(@scode)
set@t=''
if@len%2=1
begin
set@t=SUBSTRING(@scode,@len/2+2,@len/2)+SUBSTRING(@scode,@len/2+1,1)+SUBSTRING(@scode,1,@len/2)
end
elseif@len%2=0
begin
set@t=SUBSTRING(@scode,@len/2+1,@len/2)+SUBSTRING(@scode,1,@len/2)
end
return@t
end

执行测试

selectdbo.wei('1230456')
selectdbo.wei('123456')

‘肆’ sql 如何将两行换位

数据在表中是没有实际位置的概念的,所以排序只可以在select的时候设置,update是不能更改循序的,如果要实现你的效果,首先你要找一个主键或一个保存数据顺序的字段,这样才好设置调转两条记录的顺序 ,当你找好了主键或创建了保存数据顺序的字段,如果是主键,只能每次select的时候为这情况特别处理,如果是记录顺序的字段,就好办了,update更改一下该字段的值,然后order by 该字段即可,所以如果数据的顺序比较重要,推荐建立一个保存顺序的字段

‘伍’ sql 替换某一位置字符

sql server 2005及以上版本可使用STUFF函数。

语法:

STUFF(character_expression,start,length,character_expression)

参数说明:

  • character_expression:一个字符数据表达式。character_expression可以是常量、变量,也可以是字符列或二进制数据列。

  • start:一个整数值,指定删除和插入的开始位置。如果start或length为负,则返回空字符串。如果start比第一个character_expression长,则返回空字符串。start可以是bigint类型。

  • length:一个整数,指定要删除的字符数。如果length比第一个character_expression长,则最多删除到最后一个character_expression中的最后一个字符。length可以是bigint类型。

返回类型

  • 如果character_expression是受支持的字符数据类型,则返回字符数据。如果character_expression是一个受支持的 binary 数据类型,则返回二进制数据。

注释

  • 如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串。如果要删除的长度大于第一个字符串的长度,将删除到第一个字符串中的第一个字符。

  • 如果结果值大于返回类型支持的最大值,则产生错误。

示例

  • 以下示例在第一个字符串abcdef中删除从第2个位置(字符b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。

SELECTSTUFF('abcdef',2,3,'ijklmn');
GO
  • 下面是结果集:

---------
aijklmnef

(1 row(s) affected)


以上摘自:https://msdn.microsoft.com/zh-cn/library/ms188043(v=sql.105).aspx

‘陆’ sql数据库中select和from语句可以调换位置吗。

不可以,固定格式。select语句格式:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
以上语句的先后顺序不得改变。

‘柒’ Microsoft SQL Server 2008 我设计好表,然后写入数据,执行后,有些行会换位置这是怎么回事

读取表时并不一定会按你输入的数据顺序来排列的,你可以在查询语句中使用order by 来指定排序顺序
如; select * from table1 order by newdata;

‘捌’ sql 如何更换列的位置

select name , num from tablename

‘玖’ C/S的影院座位表情况怎样存进SQL server 2005里

应该不同的影厅座位情况不一样吧?如果是有不同影厅的情况,那么最起码应该有如下表和字段:
1. 影厅座位信息表:
ID(主键) 影厅ID(外键) 排号 座位号(或者使用排号+座号的方式如6.1就代表6排1号,两字段合并)
这个表应该基本上是静态的,因为影厅的座位信息基本不会动。

2. 电影场次表:
ID(主键) 电影ID 时间 影厅ID ……

3. 电影票售出情况表:
ID(主键,电影票号) 场次号(2表的主键) 座位号(1表的主键) ……

应该是点击某一场次的电影,才会出现你说的这个界面,根据数据库中2表和1表,可以先取出该影厅的所有座位情况并显示;其次根据2表和3表取出所有已售电影票,遍历刚才的座位,将已售出的座位换颜色即可。

当然这里只是给一个思路,具体实现可能还是比较复杂,要考虑的很多,权当一个参考吧。

‘拾’ SQLServer2008中,在已经建好的表,如何修改列的前后位置

理论上是删表重建,但是可以通过表设计器调换,让设计器帮你删表重建
右键表点设计,然后调换位置,最后保存即可