如何获取SQL中的字符串的第一个字符?
答
LEFT(colName, 1)
也会这样做。这相当于SUBSTRING(colName, 1, 1)
。
我喜欢LEFT
,因为我觉得它有点干净,但实际上,两种方式都没有区别。
答
SUBSTRING (MyColumn, 1 , 1)
第一个字符和SUBSTRING (MyColumn, 1 , 2)
第二个。
答
我喜欢:
SUBSTRING (my_column, 1, 1)
,因为它是标准的SQL-92语法,因此更便于携带。
严格地说,标准版本将是
SUBSTRING (my_column FROM 1 FOR 1)
的要点是,从一个到另一个变换,因此于任何类似的供应商的变化,是微不足道的。
p.s.直到最近我才指出,标准SQL中的函数是故意相反的,因为它们的参数列表并不是传统的commalist,为了使它们易于被标识为标准!
+0
谢谢,LEFT(str,n)不支持许多格式(包括我使用的格式)。 – GreySage 2016-03-20 21:31:38
答
如果搜索字符串的第一个字符的SQL字符串
SELECT CHARINDEX('char', 'my char')
=> return 4
答
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
答
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
@Result:his
- 或 -
SET @Result = LEFT(@SomeString, 6)
SELECT @Result
@Result:This i
我不知道有关SQL服务器,但在逻辑数据库服务器可能能够优化当它使用索引时,它比SUBSTRING更好。 – thomasrutter 2009-04-27 05:26:09
@thomasrutter,查看执行计划,SQL Server(至少2008R2)在内部将'LEFT(colName,length)'转换为'SUBSTRING(colName,1,length)'。所以**这里没有任何优化**,这只是一个偏好。 – 2014-09-15 15:15:53