-2
votes

Query SQL pour apporter la dernière lettre d'une chaîne à la première position de la lettre à l'aide de SQL Server

J'ai une colonne appelée superviseure code> à partir d'une table jobdata ​​code> dans une base de données SQL Server. Dans ce Supervisor Code> Colonne Les enregistrements sont du format ci-dessous.

DANNYL
ADITYAG
SAMMYS
BOBBYJ


4 commentaires

colonne , pas de champ. rangs , pas d'enregistrements.


Comme cela ressemble à ce qu'ils sont prénom et première initiale du nom de famille, je suggérerais que ce que vous devriez vraiment faire est de les séparer en deux colonnes. Ensuite, vous pouvez créer une colonne calculée pour les placer dans le format que vous souhaitez. Si vous commencez avec des données correctement normalisées (ce n'est pas parce qu'il viole 1nf) ce genre de chose est facile.


Duplicaté possible de requête SQL à Apportez la dernière lettre dans une chaîne à la première lettre de la lettre


@Smor - belle prise! Ce n'est pas un duplicataire possible - C'est un duplicata . Mais si je comparais les réponses, ils sont bons et travaillent, mais les réponses ici sont très différentes et travaillent aussi.


4 Réponses :


3
votes

Vous pouvez utiliser la solution suivante à l'aide de gauche code> et droit code> pour obtenir les parties du nom. En utilisant inférieur code> Vous pouvez convertir les caractères majuscules en minuscules: xxx pré>

car il ressemble à la colonne superviseure code> contient des valeurs vides Vous pouvez également utiliser la solution suivante Sans calcul et ne pas échouer sur les valeurs vides: p> xxx pré>

... et une autre possibilité d'utiliser Stuff code> : P>

SELECT LOWER(LEFT(STUFF(Supervisor, 1, 0, RIGHT(Supervisor, 1)), LEN(Supervisor)))
FROM JobData


7 commentaires

Je reçois une erreur lorsque la conversion de Varcharne en Integer. Le champ que j'utilise pour la conversion est de type Varchar, à la conversion de Varcharne en entier échoue.


Sélectionnez Basse (droite (superviseur, 1) + Gauche (superviseur, len (superviseur))) de Jobdata Il s'agit de la déclaration SQL que j'ai utilisée et cela fonctionne. Merci pour votre aide


Votre requête fonctionne bien sur la démo avec des valeurs fournies. Votre requête fournie ne fonctionne pas comme décrit. Vous devez utiliser len-1 - vous obtenez jbbobj au lieu de jbobby


Oui, j'ai le même résultat. Dannyl a entraîné ldannyl. Que je ne veux pas


Oui parce que vous manquez le -1 après la longueur. - Sélectionnez Basse (Superviseur, 1) + Gauche (superviseur, len (superviseur) -1)) de Jobdata


Si je l'utilise, je reçois une erreur "Paramètre de longueur non valide transmis à la fonction de gauche ou de sous-chaîne" Comment puis-je éviter cela?


Vous devez filtrer les colonnes de superviseur vide. Voir la mise à jour et la démonstration.



1
votes

Il y a probablement une meilleure façon de le faire, mais voici ma proposition.

SELECT lower(left(right('DANYL',1)+'DANYL',len('DANYL')))


0 commentaires

0
votes

Comme ça? :

SELECT
LOWER(CONCAT(SUBSTRING([Supervisor], LEN([Supervisor]), 1),SUBSTRING([Supervisor], 1, ABS(LEN([Supervisor])-1))))
FROM TABLE


0 commentaires

1
votes

Utilisation de SUBSTRIND CODE> Vous pouvez obtenir le résultat attendu:

ldanny
gaditya
ssammy
jbobby


0 commentaires