小编XMe*_*i01的帖子

SQL数据库引擎如何交换两列值?

我想交换表中两列的值,我发现在 SQL 中我们可以通过使用 Update 来做到这一点:

update the_table set first_name = last_name, last_name = first_name;
Run Code Online (Sandbox Code Playgroud)

它有效但我想知道 SQL 如何能够做到这一点而不覆盖其他列中的列中的数据?

database-engine update

6
推荐指数
2
解决办法
1559
查看次数

如何从视图中解密列名?

我必须处理第三方数据库,我试图获取视图中使用的所有列,但我对它们进行了加密,
例如:而不是获取intNUMERO_SALARIE知道TNumSal为什么?

DECLARE @TableViewName NVARCHAR(128)
SET @TableViewName=N'DP_SALARIE'
SELECT b.name AS ColumnName, c.name AS DataType, b.max_length AS Length
FROM sys.all_objects a
INNER JOIN sys.all_columns b
ON a.object_id=b.object_id
INNER JOIN sys.types c
ON b.user_type_id=c.user_type_id
WHERE a.Name=@TableViewName
AND a.type IN ('U','V')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有什么办法可以解密它们吗?

sql-server datatypes view system-tables

4
推荐指数
1
解决办法
293
查看次数

如何将表格的列排成一行?

我有一个数据库,其中架构是:

CREATE TABLE [dbo].[Student]([Id] [int] NULL,[Name] [varchar](255) NULL,[Mark] [int] NULL)
INSERT [dbo].[Student] ([Id], [Name], [Mark]) VALUES (1, N'Medi', 10)
INSERT [dbo].[Student] ([Id], [Name], [Mark]) VALUES (2, N'Ibra', 15)
INSERT [dbo].[Student] ([Id], [Name], [Mark]) VALUES (3, N'Simo', 20)
Run Code Online (Sandbox Code Playgroud)

所以查询select * from Student

ID 姓名 标记
1 梅迪 10
2 伊布拉 15
3 西莫 20

但我希望第一行的标题如下所示:

ID 姓名 标记
ID 姓名 标记
1 梅迪 10
2 伊布拉 15
3 西莫 20

为了建立这个结果,

  • 首先我想获取列:

我已经通过INFORMATION_SCHEMA查询完成了此操作:

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS …
Run Code Online (Sandbox Code Playgroud)

sql-server ssms

2
推荐指数
1
解决办法
743
查看次数