orcale和sql server在编写sql语句时的区别
1. 字符串连接:
在Oracle中,您可以使用“||”操作符来连接字符串:
SELECT first_name || ' ' || last_name AS full_name FROM employees;
在SQL Server中,您可以使用“+”操作符来连接字符串:
SELECT first_name + ' ' + last_name AS full_name FROM employees;
2. 获取当前日期和时间:
在Oracle中,使用SYSDATE
来获取当前日期和时间:
SELECT SYSDATE FROM dual;
在SQL Server中,使用GETDATE()
函数来获取当前日期和时间:
SELECT GETDATE();
3. 获取顶部/前N行:
在Oracle中,使用FETCH FIRST N ROWS ONLY
来获取前N行数据:
SELECT * FROM employees FETCH FIRST 5 ROWS ONLY;
在SQL Server中,使用TOP
关键字来获取顶部N行数据:
SELECT TOP 5 * FROM employees;
4. 分页查询:
在Oracle中,使用ROWNUM
来实现分页查询:
SELECT * FROM ( SELECT *, ROWNUM AS rnum FROM employees WHERE ROWNUM <= 10 ) WHERE rnum > 5;
在SQL Server中,使用OFFSET
和FETCH
来实现分页查询:
SELECT * FROM employees ORDER BY employee_id OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;
5. 获取自增主键值:
在Oracle中,可以使用RETURNING INTO
子句来获取插入后的自增主键值:
INSERT INTO employees (employee_id, first_name, last_name) VALUES (NULL, 'John', 'Doe') RETURNING employee_id INTO :new_id;
在SQL Server中,可以使用SCOPE_IDENTITY()
函数来获取插入后的自增主键值:
INSERT INTO employees (first_name, last_name) VALUES ('John', 'Doe'); SELECT SCOPE_IDENTITY();
6. 字符串截取:
在Oracle中,使用SUBSTR
函数来截取字符串:
SELECT SUBSTR(column_name, start_position, length) AS substring FROM table_name;
在SQL Server中,使用SUBSTRING
函数来截取字符串:
SELECT SUBSTRING(column_name, start_position, length) AS substring FROM table_name;
7. 获取最大值和最小值:
在Oracle中,使用MAX
和MIN
函数来获取最大和最小值:
SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary FROM employees;
在SQL Server中,同样使用MAX
和MIN
函数来获取最大和最小值:
SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary FROM employees;
8. 日期格式化:
在Oracle中,使用TO_CHAR
函数来格式化日期:
SELECT TO_CHAR(hire_date, 'YYYY-MM-DD') AS formatted_date FROM employees;
在SQL Server中,使用CONVERT
函数来格式化日期:
SELECT CONVERT(VARCHAR, hire_date, 23) AS formatted_date FROM employees;
9. 数据类型转换:
在Oracle中,使用TO_NUMBER
、TO_DATE
等函数来进行数据类型转换:
SELECT TO_NUMBER('123') AS num_value, TO_DATE('2023-08-13', 'YYYY-MM-DD') AS date_value FROM dual;
在SQL Server中,使用CAST
和CONVERT
函数来进行数据类型转换:
SELECT CAST('123' AS INT) AS num_value, CONVERT(DATE, '2023-08-13', 23) AS date_value;