0
votes

Colonne calculée SQL basée sur un caractère spécial sur une autre colonne

Je ne suis pas bon avec SQL du tout, a à peine une idée sur la façon de faire des scripts de base sucer comme supprimez, déposez, ajoutez.

J'ai ces données avec environ 12 colonnes, je souhaite ajouter une colonne calculée qui changera en fonction si un caractère spécial apparaît dans une autre colonne. P>

disons P>

A                 C   
Money$            YES
Money             NO


0 commentaires

4 Réponses :


3
votes

Vous utiliseriez un cas expression et comme : xxx

Ce qui suit est juste commentaire.

C'est une syntaxe très basique pour SQL. Je vous recommanderais de passer du temps à apprendre les bases. L'apprentissage-as-you-go est une approche correcte - en supposant que vous avez des principes fondamentaux à construire. Sinon, vous êtes susceptible de passer beaucoup de temps pour apprendre quelques choses, et vous ne pouvez pas apprendre la meilleure façon de faire les choses.


1 commentaires

Comment allais-je utiliser votre utilisation? Sélectionnez T. *, Est-ce que je remplacerais le T par quelque chose d'autre? Nevermind, je bricolais avec le vôtre, c'était le code qui a résolu ma question :) C'est vraiment simple, je continuerai à lire un peu plus sur ce type de fonctions, si vous pouvez me recommander une bonne ressource, s'il vous plaît laissez-moi savoir



3
votes

Oui, c'est possible. Vous devrez remplacer les pièces d'accolades ( {} ) avec les noms d'objet appropriés. J'utilise également un bit plutôt que 'oui' / 'non' ; Comme cela semble mieux adapté: xxx

Notez que cela retournera 0 si la colonne ( {colonne} ) a une valeur de < code> null , pas null ; Ne savez pas si c'est la logique correcte cependant, cela devrait être plus que suffisant pour obtenir le roulement de la balle. Sinon, lisez sur le cas expression expression et null logique.


15 commentaires

MSG 102, niveau 15, état 1, ligne 2 Syntaxe incorrecte près de '{'. est ce que je reçois lorsque vous utilisez cela. Ne sais pas pourquoi


@Victorjmytre .... "Vous devrez remplacer les pièces des accolades ({}) avec les noms d'objet appropriés." Vous n'avez pas remplacé les pièces d'accolades.


Je l'ai fait, mais de manière incorrecte, votre réponse a également fonctionné. Un peu plus complexe que l'autre en raison du bit, mais je vais l'utiliser pour une autre colonne calculée :) Merci beaucoup!


Donc, par exemple @victorjmytre, au lieu de {votretable} , vous mettrez le nom réel de Votre table .


Oui, j'ai compris cette partie, c'était juste que j'ai oublié le préfixe de ma table et cela causait des problèmes. Question rapide, Isée que mes colonnes calculées ne s'affichent pas dans des requêtes extérieures telles que la puissance BI, existe-t-il un moyen de faire de ces colonnes sur le spectacle de DatabSae pour les requêtes extérieures?


Ce qui précède modifie la table. Vous serez capable de voir dans toutes les questions qui font référence à ce tableau; Sauf si le compte (Service) n'a que des autorisations de subvention sur certaines colonnes uniquement. Mais ce sera une conversation pour votre DBA, @victorjmytre.


Et si je voulais au lieu d'avoir un peu pour 1 et 0, avez-vous une chaîne? Le oui non était un exemple, mais l'idée était plus d'une chaîne avec d'autres mots, pas une situation vraie ou fausse.


Changez ensuite la logique de l'expression CASE et supprimez-vous du Convert , @victorjmytre. Si vous ne comprenez pas le code ci-dessus (y compris Gordon), vous ne devriez pas l'utiliser. C'est à vous de soutenir cela pas nous. Si vous ne comprenez pas, il n'y a pas de temps comme le présent pour commencer à apprendre à propos de SQL (car il est clair que vous manquez de connaissances fondamentales), puis lisez sur l'expression .


@Victorjmytre " syntaxe incorrecte près de '{' " Il y a toujours une corde ( {) dans votre code ... comme je l'ai dit, "Vous devrez remplacer les pièces des bretelles ({}) avec les noms d'objet appropriés." Le fait que vous obtenez une erreur près de { montre clairement que vous 't fait de manière à ce que ces bretelles ne soient pas dans le code.


J'ai vu la question, je suis juste habitué à un autre codage où vous le mettez entre les accolades. J'ai toujours des problèmes avec le cas, le code dit qu'il s'attend à un (ou sélectionnez le cas où l'affaire est.


Jetez un coup d'œil à mes exemples, @victorjmytre. On dirait que vous faites quelque chose mal.


Alter Table Table1 Ajoutez de type comme nvarchar (max) (cas lorsque [Colonne A] comme '% $%', puis "spécial" autre "fin" de "fin") persisté; C'est ce que j'utilise, mais semble que ce ne soit pas la syntaxe correcte et ne peut pas trouver un exemple qui utilise un cas comme celui-ci. Ma table contient toutes les colonnes de chaîne comme nvarchar (max) et j'ai utilisé ce type. La colonne est nommée type et qui pourrait également causer un problème avec la syntaxe.


Qu'est-ce que nvarchar (max) y faire, @victorjmytre? En dehors de cela, vous ne définissez pas le type de données de la colonne calculé comme celui-ci, je doute gravement que vous avez besoin de 2 Go d'espace pour stocker "oui" ou "non".


Il est juste de dire que l'affaire a une syntaxe incorrecte à proximité, d'attendre (ou de sélectionner ...... Si je supprimais le type de données, il indique simplement que la définition du type de colonne doit incluse un type de données, je comprends votre point. Mais Je pose des questions sur ces problèmes avec ce code. J'ai utilisé NvarparMax comme exemple.


Parce que vous avez un NVARCHAR (MAX) aléatoire (max) là-bas, @victorjmytre. J'ai bien peur que je ne sois pas là pour vous aider à apprendre les bases de SQL, désolé. Revoir mon code et le violon; Si vous ne le comprenez pas, prenez le temps d'apprendre et de comprendre ces caractéristiques. Je suggère les conditions de Google suivantes: Expression de cas SQL Server et SQL Server Couru Colonne , et peut-être Alter Table SQL Server .



-1
votes

Vous pouvez utiliser Regex pour vérifier tout caractère spécial de la colonne EX: SQL Server

Sélectionnez cas lorsque "ABCD $" comme "% [^ a-za-z0-9]%" 1 puis "oui" sinon "non" fin de résultat

mysql

Sélectionnez cas lorsque 'ABCD $' REGEXP '[^ A-ZA-Z0-9]' = 1 alors "oui" sinon "non" de fin "sans" résultat

regex peut être changé conformément à l'exigence

REGEXP '[^ [: ALNUM:]]'


4 commentaires

"Vous pouvez utiliser regex" à part votre ne peut pas, car SQL Server ne prend pas en charge RegEx et il n'y a pas de fonction REGEXP dans la dialecte T-SQL.


Regex est remplaçable par comme


Cela ne change pas ma déclaration "SQL Server ne prend pas en charge Regex" . Il ne prend en charge que la correspondance des modèles de base.


Donc, vous voulez simplement ne changer que $, si oui, vous pouvez écrire sur '% $%' avec similaires, c'est-à-dire. Et si vous souhaitez supprimer tout caractère spécial, vous devez ajouter tous les caractères spéciaux.



0
votes

MATCH REGEXP peut vous aider à déterminer s'il existe un personnage que vous considérez comme un caractère spécial dans les chaînes: xxx

modèle [^ a-za-z0-9] correspondra à n'importe quel caractère qui n'est pas un numéro, un espace ou un caractère alphabétique (notez le ^ au début du groupe de caractères - qui signifie pas )


0 commentaires