关于sqlserver2008r2如何将表中的某个字段的值替换成表中的另一个字段的值

有表Function功能表:

CREATE TABLE PlatformFunction(
    [id] [bigint] IDENTITY(1,1) NOT NULL,
    [parent_id] [bigint] NULL,
    [function_name] [nvarchar](20) NULL,
    [function_type] [nvarchar](20) NULL,
    [function_url] [nvarchar](200) NULL,
    [function_icon] [nvarchar](200) NULL,
    [function_order_id] [int] NULL,
    [function_create_time] [datetime] NULL,
    [function_status] [int] NULL,
 CONSTRAINT [PK_PLATFORMFUNCTION] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

表中的数据有:

SET IDENTITY_INSERT PlatformFunction ON
INSERT PlatformFunction ([id], [parent_id], [function_name], [function_type], [function_url], [function_icon], [function_order_id], [function_create_time], [function_status]) VALUES (1, 82, N'管理人员管理', N'1', N'/admin/role/index', NULL, 1, CAST(0x0000A99E00000000 AS DateTime), 1)
INSERT [dbo].[PlatformFunction] ([id], [parent_id], [function_name], [function_type], [function_url], [function_icon], [function_order_id], [function_create_time], [function_status]) VALUES (2, 1, N'管理人员列表', N'1', N'/admin/role/operator_list', NULL, 1, CAST(0x0000A99E00000000 AS DateTime), 1)
INSERT [dbo].[PlatformFunction] ([id], [parent_id], [function_name], [function_type], [function_url], [function_icon], [function_order_id], [function_create_time], [function_status]) VALUES (3, 1, N'角色列表', N'1', N'/admin/role/role_list', NULL, 1, CAST(0x0000A99E00000000 AS DateTime), 1)

现在需要将function_order_id字段的值改为id的SQL是:

update PlatformFunction set function_order_id =id


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于 SQL 语句解析成表及字段,可以通过解析 SQL 语句中的关键词和语法结构来实现。 首先,需要使用语法解析器将 SQL 语句解析成语法树。然后,从语法树中提取出所有的表名和字段名,并将它们存储在一个数据结构中,例如一个列表或字典。 对于表名,可以在语法树中找到所有的表引用节点,然后提取出其中的表名。如果 SQL 语句中使用了表的别名,也需要将其解析出来并与原表名对应。 对于字段名,可以在语法树中找到所有的列引用节点,然后提取出其中的列名。如果 SQL 语句中使用了表的别名或者列的别名,也需要将其解析出来并与原表名或列名对应。 最后,将解析出来的表名和字段名组合成一个数据结构返回即可。 示例代码: ```python import sqlparse def parse_sql(sql): # 解析 SQL 语句 parsed = sqlparse.parse(sql)[0] # 提取出所有的表名和字段名 tables = [] columns = [] for token in parsed.flatten(): if token.ttype == sqlparse.tokens.Name: # 如果是表名或者列名 name = str(token) if '.' in name: # 如果是带有表名前缀的列名 table_name, column_name = name.split('.') columns.append((table_name, column_name)) else: # 如果是表名或者不带有表名前缀的列名 tables.append(name) elif token.ttype == sqlparse.tokens.Keyword and str(token).upper() == 'AS': # 如果是别名 name = str(token.parent) if '.' in name: # 如果是带有表名前缀的别名 table_name, column_name = name.split('.') columns.append((table_name, column_name)) else: # 如果是不带有表名前缀的别名 columns.append((tables[-1], name)) # 返回解析结果 return {'tables': tables, 'columns': columns} ``` 这个函数接受一个 SQL 语句作为输入,返回一个字典,包含解析出来的表名和字段名。例如: ```python >>> sql = 'SELECT foo.id, bar.name AS bar_name FROM foo JOIN bar ON foo.id = bar.id' >>> parse_sql(sql) {'tables': ['foo', 'bar'], 'columns': [('foo', 'id'), ('bar', 'name')]} ``` 这个例子中,解析出来的表名是 `foo` 和 `bar`,解析出来的字段名是 `(foo, id)` 和 `(bar, name)`。可以看到,解析出来的结果包含了表名和列名的对应关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ttxx12345

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值