2009-04-27 96 views

Trả lời

280

LEFT(colName, 1) cũng sẽ làm điều này. Nó tương đương với SUBSTRING(colName, 1, 1).

Tôi thích LEFT, vì tôi thấy nó sạch hơn một chút, nhưng thực sự, không có sự khác biệt nào cả.

+0

Tôi không biết về SQL server, nhưng logic một máy chủ cơ sở dữ liệu có thể tối ưu hóa LEFT tốt hơn SUBSTRING khi nó đang sử dụng một chỉ mục. – thomasrutter

+7

@thomasrutter, Nhìn vào một kế hoạch thực hiện, SQL Server (ít nhất là 2008R2) nội bộ dịch 'LEFT (colName, length)' thành 'SUBSTRING (colName, 1, length)'. Vì vậy, ** không có bất kỳ tối ưu hóa nào ** ở đây, nó chỉ là một sở thích. –

11

SUBSTRING (MyColumn, 1 , 1) cho ký tự đầu tiên và SUBSTRING (MyColumn, 1 , 2) cho hai ký tự đầu tiên.

28

tôi thích:

SUBSTRING (my_column, 1, 1) 

vì nó là tiêu chuẩn SQL-92 cú pháp và do đó hơn xách tay.


Nói đúng ra, phiên bản tiêu chuẩn sẽ là

SUBSTRING (my_column FROM 1 FOR 1) 

Vấn đề là, chuyển từ một đến khác, vì thế đối với bất kỳ sự thay đổi nhà cung cấp tương tự, là tầm thường.

p.s. Chỉ gần đây tôi mới chỉ ra rằng các chức năng trong SQL tiêu chuẩn được cố ý ngược lại, bằng cách có các danh sách tham số không phải là các dấu phẩy thông thường, để làm cho chúng dễ nhận biết như là từ tiêu chuẩn!

+0

Cảm ơn bạn, LEFT (str, n) không được hỗ trợ bởi nhiều định dạng (bao gồm cả định dạng tôi đang sử dụng). – GreySage

0

Nếu bạn tìm kiếm các char đầu tiên của chuỗi trong Sql chuỗi

SELECT CHARINDEX('char', 'my char') 

=> return 4 
1

ĐẦU VÀO

STRMIDDLENAME 
-------------- 
Aravind Chaterjee 
Shivakumar 
Robin Van Parsee 

SELECT STRMIDDLENAME, 
CASE WHEN INSTR(STRMIDDLENAME,' ',1,2) != 0 THEN SUBSTR(STRMIDDLENAME,1,1) || SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,1)+1,1)|| 
SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,2)+1,1) 
WHEN INSTR(STRMIDDLENAME,' ',1,1) != 0 THEN SUBSTR(STRMIDDLENAME,1,1) || SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,1)+1,1) 
ELSE SUBSTR(STRMIDDLENAME,1,1) 
END AS FIRSTLETTERS 
FROM Dual; 

OUTPUT 
STRMIDDLENAME     FIRSTLETTERS 
---------      ----------------- 
Aravind Chaterjee    AC   
Shivakumar      S 
Robin Van Parsee     RVP 
4
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student 
5

Nó là đơn giản để đạt được điều này bằng cách làm theo:

DECLARE @SomeString NVARCHAR(20) = 'This is some string' 
DECLARE @Result NVARCHAR(20) 

SET @Result = SUBSTRING(@SomeString, 2, 3) 
SELECT @Result 

@Result: his

-HOẶC-

SET @Result = LEFT(@SomeString, 6) 
SELECT @Result 

@Result: This i

Các vấn đề liên quan