在数据库的运用过程中,我们时常会碰到根据身份证号码来获取当前的年龄,今天我在这里写了一个函数,就是关于获取年龄的 create or replace function FUNC_COMPARE_SFZHM( sfzhm in varchar2) --输入身份证号码 return number /* 函数说明,返回值0为小于18岁:值为1是大于75岁:其他情况是返回值为2 在这个函数里用到了trunc(months_between()) 然后就是将身份证号码里的年月日组合成'yyyy-mm-dd'
IdentityNumber 是身份证号 年龄: ,), GETDATE()) / 365.25) as '推荐人年龄', 15位的身份证计算年龄: case when b.IdentityNumber IS null or b.IdentityNumber='' then '' ,), )) ,), )) else '' end as '推荐人年龄', 性别: ,) ) ) ) then '男' ,) ) ) ) then '女' else '' end as '推荐人性别',
sql server 提取汉字/数字/字母的方法 --提取数字 IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL DROP FUNCTION DBO.GET_NUMBER2 GO )) ) AS BEGIN BEGIN ,'') END RETURN @S END GO --测试 PRINT DBO.GET_NUMBER('呵呵ABC123ABC') GO ---------------------------------------------------
SELECT *, Age= datediff(yy,cast(case when substring(PersonalId,,) ') /*若第7位不是'1'或'2'则表示是15位身份证编码规则*/ then substring(PersonalId,,) ,) end as datetime),getdate()) FROM Student WHERE datediff(yy,cast(case when substring(PersonalId,,) ') then substring(P
Sql中可将重复的sql提取出来,使用时用include引用即可,最终达到sql重用的目的,如下: <select id="findUserByNameAndSex" parameterType="com.huida.po.User" resultType="com.huida.po.User"> <!-- select * from user where 1=1 and username like "%${usern
SELECT CASE WHEN (age >= 10 AND age <= 20) THEN '10-20' WHEN (age >= 21 AND age <= 30) THEN '21-30' ELSE '30-' END 'eag_layer', count(*) emps FROM address_book GROUP BY CASE WHEN (age >= 10 AND age <= 20) THEN '10-20' WHEN (age >= 21
首先,列出服务器上所有数据库. -- 获取数据库列表 SELECT name FROM master.dbo.sysdatabases ORDER BY name 其次,这是一种让所有的用户从数据库中创建存储过程. -- 获取存储过程列表 -- Type = 'P' --> 存储过程 -- Category = 0 --> 用户创建的 ORDER BY name 然后我们就可以检索查询与存储过程内容如下: -- 获取存储过程内容 -- Name = Stored Procedure Name.
CREATE FUNCTION [dbo].[f_trimstr] ( @str NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN WHILE CHARINDEX('<', @str) > 0 SET @str = STUFF(@str, CHARINDEX('<', @str), CHARINDEX('>', @str) - CHA
select case left(idcard,2) when '11' then '北京市'when '12' then '天津市'when '13' then '河北省'when '14' then '山西省'when '15' then '内蒙古自治区'when '21' then '辽宁省'when '22' then '吉林省'when '23' then '黑龙江省'when '31' then '上海市'when '32' then '江苏省'when '33' then '浙江
此情况用于数据库中没有“年龄”这个字段,只有“出生日期”这个字段.先计算出“年龄”,在分组查询. 1.SELECT *, ROUND(DATEDIFF(CURDATE(), popBirthday)/365.2422) AS '年龄' FROM population :这是获取当前日期, 在根据“出生日期”,计算出“年龄”,AS 后面取的“年龄的别名”,数据库里并没有“年龄”这个字段. 2. Select popSex,popNative, Sum(Case When 年龄 <=20 Th
今天公司项目中遇到了一个需求,要求提取用户电话号码字段中的所有电话信息. 由于该字段在项目最初设计中没有严格控制数据质量,导致用户在输入时包含了很多非电话的信息,如用户名字等(136 **** **** 张san) 要求提取出当中的136******** 思路:创建函数,依次判断每个字符的ASCII码是否在[0,9]中,提取该部分内容. Create Function USF_ExtractNumeric ( ) ) ) AS Begin ) Set @outputStr = '' Begin
本作代码下载:https://files.cnblogs.com/files/xiandedanteng/LeftInnerNotExist20191222.rar 人们总是喜欢给出或是得到一个简单明了甚至有些粗暴的结论,但现实之复杂往往不是几句简单的话语所能描述.(版权所有) 下结论前,先让我们看一个对比实验. 有一张表delivery_history,表结构如下: CREATE TABLE delivery_history ( id ,) not null primary key, name
elect case left(idcard,2) when '11' then '北京市' when '12' then '天津市' when '13' then '河北省' when '14' then '山西省' when '15' then '内蒙古自治区' when '21' then '辽宁省' when '22' then '吉林省' when '23' then '黑龙江省' when '31' then '上海市' when '32' then '江苏省' when '33
SELECT BussinessNo = STUFF(REPLACE(REPLACE((SELECT N.business_no FROM T_delegate_list N WHERE N.g_mode = 'LR077639'FOR XML AUTO),'<N business_no="', '|'),'"/>',''),1,1,'')
select a.*,b.item_name from (select sum(buy_num) num,nqh from (select substr(a.embed_dis_province,1,10) dtime,b.buy_num,case substr(a.idcardcode,1,2) when '11' then '1100' when '12' then '1200' when '31' then '3100' when '50' then '5000' else substr(
CREATE FUNCTION ufn_hr_getagefrombirthday ( @birthday DATE, @now DATE =NULL ) ) BEGIN IF (@now IS NULL OR @now = '') BEGIN SET @now = GETDATE(); END; DECLARE @age INT; ; ); WHILE (DATEADD(YEAR, @age, @birthday) < @now) BEGIN ; END; SELECT @result = C
CREATE FUNCTION [dbo].[StringExtractNumber(FirstOrLast)](@address nvarchar(max),@firstOrLast INT) returns INT as BEGIN DECLARE @returnInt VARCHAR(20) IF @firstOrLast=1 SET @returnInt= REVERSE(SUBSTRING( STUFF(reverse(@address),1,PATINDEX('%[0-9]%',re