获取城市首字母 添加到这张表的另一个字段

本文介绍了一种使用MySQL更新表字段的技巧,通过将员工表中城市名的首字母提取出来,并将其添加到另一张表的指定字段中。此方法利用了CONV和HEX函数转换汉字编码,再通过INTERVAL和ELT函数匹配ASCII码区间,最终实现城市名首字母的自动填充。

mysql:获取城市首字母 添加到这张表的另一个字段

举例说明

表abc:
表abc
表employee
在这里插入图片描述

SQL

  
 UPDATE abc a inner join (select id,
 ELT(INTERVAL(CONV(HEX(left(CONVERT(name USING GBK),1)),16,10),
 0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,
  0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),
 'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q',  'R','S','T','W','X','Y','Z') as PY 
 from employee) as e on a.id = e.id set a.D = e.PY

运行结果

运行结果
employee表的name字段的首字母都添加到了abc表的D 字段

同理…

在 SQL 中为某新增一个字段,可以使用 `ALTER TABLE` 语句配合 `ADD COLUMN` 子句来实现。语法如下: ```sql ALTER TABLE table_name ADD COLUMN column_name data_type [constraints]; ``` 其中: - `table_name` 是你要修改的名; - `column_name` 是要新增的字段名; - `data_type` 是该字段的数据类型(如 INT、VARCHAR、DATE 等); - `[constraints]` 是可选的约束条件,比如 `NOT NULL`、`DEFAULT`、`UNIQUE` 等。 --- ### 示例:给 `users` 添加一个 `email` 字段 ```sql ALTER TABLE users ADD COLUMN email VARCHAR(255) NOT NULL DEFAULT ''; ``` 上述 SQL 的作用是: - 在 `users` 中新增一个名为 `email` 的字段; - 数据类型为 `VARCHAR(255)`,最多存储 255 个字符; - 设置 `NOT NULL`,确保该字段不能为空; - 提供默认值 `''`(空字符串),防止已有数据行违反 `NOT NULL` 约束。 --- ### 其他常见示例: 1. **添加可为空的字段:** ```sql ALTER TABLE users ADD COLUMN age INT NULL; ``` 2. **添加带默认值的时间戳字段:** ```sql ALTER TABLE users ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP; ``` 3. **添加多个字段(某些数据库支持,如 MySQL):** ```sql ALTER TABLE users ADD COLUMN phone VARCHAR(20), ADD COLUMN address TEXT; ``` > ⚠️ 注意:不同数据库系统的语法略有差异: > - **MySQL / PostgreSQL / SQLite / SQL Server** 都支持 `ADD COLUMN`,但: > - SQLite 不支持直接删除列或修改列类型(需重); > - SQL Server 中 `ADD COLUMN` 可省略 `COLUMN` 关键字:`ADD phone VARCHAR(20)`; > - Oracle 使用 `ALTER TABLE ... ADD (...)` 语法,也无需 `COLUMN`。 --- ### 各数据库兼容写法参考(以 MySQL 为例): ```sql -- MySQL 示例 ALTER TABLE employees ADD COLUMN hire_date DATE AFTER name; ``` 这里 `AFTER name` 示将新字段添加到 `name` 字段之后(MySQL 特有)。 --- ### 总结 使用 `ALTER TABLE ... ADD COLUMN` 是标准且广泛支持的方式。执行前议: - 备份数据; - 检查是否需要默认值以避免 `NOT NULL` 冲突; - 考虑对大字段可能引起的锁和性能问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值