如何获得SQL中的string的第一个字符?

我有一个长度为6的SQL列。现在只想取该列的第一个字符。 有没有在SQL中的任何string函数来做到这一点?

LEFT(colName, 1)也会这样做。 这相当于SUBSTRING(colName, 1, 1)

我喜欢LEFT ,因为我觉得它有点干净,但是实际上,两种方法都没有什么不同。

我更喜欢:

 SUBSTRING (my_column, 1, 1) 

因为它是标准的SQL-92语法,因此更便于携带。


严格来说,标准版本是

 SUBSTRING (my_column FROM 1 FOR 1) 

关键是,从一个转换到另一个,因此任何类似的供应商变化,是微不足道的。

ps直到最近才指出,标准SQL中的函数是故意相反的,通过列出参数列表并不是传统的同义词,以使它们易于被标识为标准!

第一个字符是SUBSTRING ( MyColumn, 1 , 2 ) ,前两个是SUBSTRING ( MyColumn, 1 , 2 )

 SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student 

实现这一点很简单,方法如下:

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

而且

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

@结果: his

-要么-

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

@结果: This i

INPUT

 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 

如果在Sqlstring中searchstring的第一个字符

 SELECT CHARINDEX('char', 'my char') => return 4