如何获得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