sql 函数练习

 
USE[TEST] 
SELECT * FROM T_AB
GO
SELECT @@CPU_BUSY,@@CONNECTIONS,@@CURSOR_ROWS,@@DATEFIRST,@@ERROR,@@SERVERNAME,@@TOTAL_READ,@@TOTAL_WRITE

SELECT @@VERSION
SELECT ABS(-122.33)

SELECT ACOS(-100.0)

BEGIN TRY 
 --SELECT CONVERT(decimal(9,5), '123.4')
--SELECT DATEDIFF(YEAR,'1984-04-08',GETDATE()),CONVERT(INT,DATEDIFF(DAY,'1984-04-08',GETDATE())/365)
--SELECT DATEPART(MONTH,'1985-02-12'),DATENAME(MONTH,'2-16-1986')
    select ASCII('A'),UNICODE('A'),CHAR(35),NCHAR(32)
    END TRY
BEGIN CATCH
    PRINT ERROR_MESSAGE()
    END CATCH
    
    --select ASCII('A'),UNICODE('A'),CHAR(35),NCHAR('A')
    
    
----len function practise---------
DECLARE @MONTH VARCHAR(2)
DECLARE @DAY VARCHAR(2)
DECLARE @YEAR VARCHAR(4)
DECLARE @DATE VARCHAR(10)
BEGIN
SET @MONTH = CAST(MONTH(GETDATE()) AS VARCHAR(2))
SET @DAY = CAST(DAY(GETDATE())AS VARCHAR(2))
SET @YEAR = CAST(YEAR(GETDATE())AS VARCHAR(4))
IF LEN(@MONTH)<2
SET @MONTH = '0'+@MONTH
ELSE IF LEN(@DAY)<2
SET @DAY = '0'+@DAY

SET @DATE = @MONTH+'-'+@DAY+'-'+@YEAR
END
PRINT ERROR_MESSAGE()

SELECT @DATE
GO
-------------------
----sql split string ,LEFT RIGHT SUBSTRING REPLACE REVERSE REPLICATE() 
----SPACE()
--------------------

DECLARE @STRING VARCHAR(100)
DECLARE @INDEX INT
DECLARE @OUTPUT VARCHAR(100)
DECLARE @OUTPUT1 VARCHAR(100)
DECLARE @OUTPUT2 VARCHAR(100)
DECLARE @OUTPUT3 VARCHAR(100)
DECLARE @OUTPUT4 VARCHAR(100)
DECLARE @OUTPUT5 VARCHAR(100)
DECLARE @OUTPUT6 VARCHAR(100)
DECLARE @OUTPUT7 VARCHAR(100)
DECLARE @OUTPUT8 VARCHAR(100)
BEGIN
 
SET @STRING = 'I AM NOT A GIRL,BUT BOY'
SET @INDEX = CHARINDEX(',',@STRING)
SET @OUTPUT = LEFT(@STRING,@INDEX-1)
SET @OUTPUT1 = RIGHT(@STRING,@INDEX)
SET @OUTPUT2 = SUBSTRING(@STRING,@INDEX,4)
SET @OUTPUT3 = REPLACE(@STRING,' ','')
SET @OUTPUT6 = REVERSE(@STRING)
END
SELECT @INDEX,@INDEX+4, @OUTPUT,@OUTPUT1,@OUTPUT2,@OUTPUT3,@OUTPUT6
GO

---REPLICATE、SPACE FUNCTION  EXAMPLE  -----
USE[TEST]
IF OBJECT_ID('#T_1') IS NOT NULL
DROP TABLE #T_1
BEGIN
CREATE TABLE #T_1(FID INT ,
NAME VARCHAR(30),
ADRESS VARCHAR(100)
)
END
GO
INSERT #T_1 VALUES(1,'AA','AAAAAA')
INSERT #T_1 VALUES(2,'BB','BBBBBB')
INSERT #T_1 VALUES(3,'CC','CCCCCC')
INSERT #T_1 VALUES(4,'DD','DDDDDD')

SELECT NAME+REPLICATE('#',20-LEN(NAME)),SPACE(20-LEN(ADRESS))+ ADRESS FROM #T_1
SELECT QUOTENAME(COLUMN_NAME) AS COLUMNNAME FROM INFORMATION_SCHEMA.COLUMNS
-----------------STUFF FUNCTION PRACTISE------------
---THIS FUCTION CAN REPLACE A PART STRING OF A LONG STRING  IN OTHER STRING
SELECT STUFF('I AM 15 YEARS OLD',6,2,18)

------------------DATALENGTH()FUNCTION -----------------------
------INT categary use 4 bytes -----------------------

SELECT DATALENGTH(1),DATALENGTH(2000000000),LEN(1),LEN(222222222222222)
 
是不是很有意思呢~~~~


 

### SQL 单行函数练习题 #### 示例问题解答 对于SQL单行函数的应用,下面提供几个具体的例子来帮助理解这些函数的功能。 #### 1. 字符串处理函数 `INITCAP` 查询员工表`employees`中的姓氏以特定字母开头的记录,并将姓名首字母大写化显示出来。同时计算每个名字长度并按升序排列: ```sql SELECT INITCAP(last_name), LENGTH(last_name) FROM employees WHERE last_name LIKE 'J%' OR last_name LIKE 'A%' OR last_name LIKE 'M%' ORDER BY last_name; ``` 此命令会返回符合条件的名字及其字符数[^1]。 #### 2. 替换函数 `REPLACE` 利用`replace()`函数修改字符串内的指定部分。比如把某个字段里的特定子串替换成另一个新值: ```sql SELECT REPLACE('MySQLMySQL', 'SQL', 'sql') AS modified_string; ``` 上述语句执行后将会得到结果'MysqlMysql'作为新的字符串输出[^2]。 #### 3. 数值聚合与筛选 `MIN`, `GROUP BY`, 和 `HAVING` 为了找出各个部门经理所管理下的最低工资超过一定数额的情况,可以通过如下方式实现: ```sql SELECT manager_id, MIN(salary) FROM employees WHERE manager_id IS NOT NULL GROUP BY manager_id HAVING MIN(salary) > 6000 ORDER BY MIN(salary) DESC; ``` 这段代码能够统计出每位有下属的管理者手下最小薪资水平高于设定阈值的信息列表[^3]。 #### 4. 计算字符集大小差异 `ASCII`, `CHAR_LENGTH`, `LENGTH` 了解不同编码体系下数据占用空间的区别也很重要。例如查看英文单词和中文词语分别占据多少字节数量: ```sql SELECT ASCII('Abcdfsf'), CHAR_LENGTH('hello'), CHAR_LENGTH('我们'), LENGTH('hello'), LENGTH('我们') FROM dual; ``` 这里不仅展示了如何获取单一字符对应的ASCII码值,还比较了相同文本在不同语言环境里实际存储所需的内存单位数量[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值