Requête donne #1305 - FONCTION de base de données-nom.LEN n'existe pas; POURQUOI?
EDIT3 MySQL Violon Ici. J'ai fait l'exemple MySQL
de sorte que vous pouvez voir les problèmes actuels. Alors que je m'attends à avoir Jamie Foxx, Christoph Waltz
dans le 2 names
résultat, il donne beaucoup plus. Même si il est écrit exactement de la même manière qu'elle l'était dans le SQL
exemple où il retourner les noms correctement. :/
EDIT2 SQL Violon ici. C'est une version beaucoup plus simple, mais la logique est là. J'ai besoin de ce travail dans MySQL
comme le violon est en SQL
. Quand je viens de remplacer le SQL
fonctions avec LENGTH
et LOCATE
et le tester avec PhpMyAdmin, il renvoie l'intégralité du contenu de la actors
colonne, et pas seulement les deux premiers noms. Je suis encore plus confus maintenant que le LOCATE
est censé être l'équivalent de la CHARINDEX
.
EDIT1 *Oh, j'ai juste trouvé que ni LEN
ou CHARINDEX
existent dans MySQL
. Je pense que je peux remplacer LEN
avec LENGTH
, mais je ne sais pas quoi faire avec le CHARINDEX
j'ai essayé d'utiliser LOCATE
mais le résultat est incorrect, il donne le contenu intégral de la actors
champ. Toute idée?
Un autre suivi lors de mes précédentes questions. Ce devait être la fin de celui-ci cependant. J'ai eu une partie de la requête qui utilise la len
fonction de travail sur SQL Violon, mais dès que j'ai mis en œuvre dans la dernière question de ma base de données que je reçois de la fonction n'existe pas d'erreur. Liste de tous je considère liées ci-dessous:
Requête MySQL
SELECT
title,
director,
thumb,
LEFT(actors, LEN(actors) - CHARINDEX(', ', actors))AS '2 names'
FROM test
WHERE MATCH (title, director, actors) AGAINST ('arc*' IN BOOLEAN MODE)
L'erreur
#1305 - FUNCTION database-name.LEN does not exist
Installation
OS: MAC OSX
SERVER: MAMP
DB ACCESS: PhpMyAdmin
SHOW CREATE TABLE test
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`director` varchar(255) NOT NULL,
`actors` varchar(10000) NOT NULL DEFAULT 'Jamie Foxx, Christoph Waltz, Leonardo DiCaprio, Kerry Washington, Samuel L. Jackson',
`summary` text NOT NULL,
`cover` varchar(255) NOT NULL DEFAULT 'http://localhost:8888/assets/OBS/img/uploads/covers-thumb/django_thumb.jpg',
`thumb` varchar(255) NOT NULL DEFAULT 'http://localhost:8888/assets/OBS/img/uploads/covers-bug/django1_cover.jpg',
`trailer` varchar(255) NOT NULL DEFAULT 'fnaojlfdUbs',
PRIMARY KEY (`id`),
FULLTEXT KEY `myindex` (`title`,`director`,`actors`)
) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=utf8
Je ne comprends vraiment pas pourquoi j'obtiens cette erreur, que la déclaration a bien fonctionné sur SQL Violon. Si vous aviez besoin de renseignements complémentaires sur simple demande. Merci à vous tous pour la lecture et à l'avance pour vos réponses.
BTW: Aucune chance, elle est causée par actors varchar(10000)
?
Pourriez-vous ajouter un lien vers cette Sqlfiddle ? Il n'y a pas de construire-dans
len
fonction de MySql, il y a lenght
et char-length
fonctions, suivez ce lien: dev.mysql.com/doc/refman/5.1/en/string-functions.htmlAhh. Le vieux sqlfiddle.com astuce de la sélection d'un mauvais marque et le modèle de SGBDR!
LEN()
est un serveur Microsoft SQL server fonction. Déteste quand ça arrive.Voir Tripoter Démo
OriginalL'auteur Cream Whipped Airplane | 2014-01-04
Vous devez vous connecter pour publier un commentaire.
MySQL n'a pas intégré dans CHARINDEX() fonction.Au lieu de cela, vous pouvez utiliser TROUVER équivalent à charindex ,et au lieu de LEN vous pouvez utiliser LONGUEUR
Voir tripoter démo
Si vous voulez juste pour montrer deux acteurs du nom, vous pouvez utiliser SUBSTRING_INDEX
Voir le deuxième violon démo
Ajouté EDIT3 je suis tellement confus en ce moment..
href="http://sqlfiddle.com/#!8/b8eed/3" >Voir ce violon qui montre deux acteurs noms
QU'EN EST-IL! Wow, que de changements pour obtenir le même résultat à partir de
SQL
àMySQL
. Allez-vous poster une réponse afin que je puisse accepter? Ou dois-je le poster?Je vous remercie. J'apprécie vraiment votre aide. Have a nice day! 🙂
OriginalL'auteur M Khalid Junaid