一天,一个学生发给我这么一道关于数据库的题目
表Table1
---------------------
id name
12 aa
2 cc
de dd
23a eee
s3wd fff
3 jjjj
-----------------------
一次性把这个表添加到另一个表
并且把id列修改不满五位的加上‘A0’ 0的个数由Id列的长度觉得
例如 12----修改后----A0012
咋看到这一题,大家都会想到使用存储过程或者多条sql语句实现,这样和我们的思维比较的相符
或许在某些同学看起来使用一条SQL语句不可能实现。
那么我们来看一下
解法1:
select left('A000000000000000',(case when(5-len(id))>0 then (5-len(id)) else 0 end))+id from test1
解法2:
insert test2(id) select left('A0000',5-len(id))+id from test1
因为题目中没有具体说表存不存在,所以我们可以假设,一种是表结构已经存在,另一种是表结构不存在
解法1便是属于表结构不存在的情况下,而解法2则是在表结构已经存在的情况下。
看看我们的两种解法,其实并没有想象中的难
用到了inset或者select的查询语句,函数也是讲过的基本函数,case...then...结构,更是教材中的标题
无论在面试题还是实际的项目中,操作数据,并没有得到预期的效果,很多的是在sql语句中的错误或者sql语句的不准确。
那么从现在开始一步一个脚印,把sql语句知识点打基础,在后续的博文中会陆续整理完。