J'ai une colonne SQL avec une longueur de 6. Maintenant, voulez prendre uniquement le premier caractère de cette colonne. Y at-il une fonction de chaîne dans SQL pour faire cela?
LEFT(colName, 1)
le fera également. C'est équivalent à SUBSTRING(colName, 1, 1)
.
J'aime LEFT
, car je le trouve un peu plus propre, mais vraiment, il n'y a pas de différence de toute façon.
Je préfère:
SUBSTRING (my_column, 1, 1)
parce que c'est la syntaxe Standard SQL-92 et donc plus portable.
Strictement parlant, la version standard serait
SUBSTRING (my_column FROM 1 FOR 1)
Le fait est que la transformation de l’un en l’autre, et donc de toute variante de fournisseur similaire, est triviale.
p.s. Ce n'est que récemment que l'on m'a fait remarquer que les fonctions en langage SQL standard sont délibérément contraires, en ayant des listes de paramètres qui ne sont pas des commalistes classiques, afin de les rendre facilement identifiables comme étant du standard!
SUBSTRING ( MyColumn, 1 , 1 )
pour le premier caractère et SUBSTRING ( MyColumn, 1 , 2 )
pour les deux premiers.
Il est simple d'y parvenir en suivant:
DECLARE @SomeString NVARCHAR(20) = 'This is some string'
DECLARE @Result NVARCHAR(20)
et soit
SET @Result = SUBSTRING(@SomeString, 2, 3)
SELECT @Result
@Result: his
-OU-
SET @Result = LEFT(@SomeString, 6)
SELECT @Result
@Result: This i
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
CONTRIBUTION
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
Sélectionnez les deux premiers caractères du champ sélectionné avec Left(string,Number of Char in int)
SELECT LEFT(FName, 2) AS FirstName FROM dbo.NameMaster
Si vous recherchez le premier caractère de chaîne dans la chaîne Sql
SELECT CHARINDEX('char', 'my char')
=> return 4