orcale和sql server在编写sql语句时的区别

发布时间 2023-08-14 00:11:11作者: 孤幽影暗

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中,使用OFFSETFETCH来实现分页查询:

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中,使用MAXMIN函数来获取最大和最小值:

SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary FROM employees;

在SQL Server中,同样使用MAXMIN函数来获取最大和最小值:

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_NUMBERTO_DATE等函数来进行数据类型转换:

SELECT TO_NUMBER('123') AS num_value, TO_DATE('2023-08-13', 'YYYY-MM-DD') AS date_value FROM dual;

在SQL Server中,使用CASTCONVERT函数来进行数据类型转换:

SELECT CAST('123' AS INT) AS num_value, CONVERT(DATE, '2023-08-13', 23) AS date_value;