Maison base de données tutoriel mysql PLSQL开发实现字符串拆分

PLSQL开发实现字符串拆分

Jun 07, 2016 pm 05:59 PM
plsql Apparaître 字符串 实现 应用 开发 拆分 程序开发

在应用程序开发中,会出现单选或多选框条件输入的需求。如输入框的输入值为sz,或sz|nj|zj|nt,在SQL中会这样处理。 select * from tab_1 where col_1=sz ;这是单选框输入。 select * from tab_1 where col_1 =sz|nj ;这是多选框输入。 很明显,多选输入值不

在应用程序开发中,会出现单选或多选框条件输入的需求。如输入框的输入值为'sz',或'sz|nj|zj|nt',在SQL中会这样处理。

select * from tab_1 where col_1='sz' ;这是单选框输入。

select * from tab_1 where col_1 ='sz|nj' ;这是多选框输入。

很明显,多选输入值不会查询出结果。
-


如何解决这个问题?

有使用动态SQL实现的方法,如拼装成这样的SQL语句:select * from tab_1 where col_1 in ('sz','nj') ;

还有将'sz|nj'拆分插入到临时表中,再关联该临时表实现,如select * from tab_1 where col_1 in (select a from tt);

临时表涉及到表的创建和维护,还有IO。

我最近想到一个方法:将传入的字符串以嵌套表类型返回,使用表函数调用,实现这类需求。

函数代码如下:

1.create or replace function f_get_unitstring(p_str_all in varchar2,  
2.                                            p_str_gap in varchar2)   3.  return t_ntb_allstring is  4.  --create or replace type t_ntb_allstring  is table of varchar2(20);   5.  v_ntb_allstring t_ntb_allstring;  
6. 
7.  str_unit varchar2(20);  
8.  str_char varchar2(1);  
9. 
10.  i_str_length number;  
11.  i_str_index  number;  
12. 
13.begin  14.  /*p_str_city:='nj~wx~sz~cz~zj~nt~yc~';*/   15.  --p_str_all := '1|2|3|';   16.  --p_str_gap := '|';   17. 
18.  v_ntb_allstring := t_ntb_allstring();  
19. 
20.  i_str_length := length(p_str_all);  
21. 
22.  i_str_index := 1;  
23. 
24.  while (i_str_index 25.    str_char := substr(p_str_all, i_str_index, 1);  
26.    
27.    if (str_char = p_str_gap) then  28.      
29.      if (str_unit is not null) then  30.        v_ntb_allstring.extend(1);  
31.        v_ntb_allstring(v_ntb_allstring.count) := str_unit;   32.        str_unit := null;   33.      end if;   34.      
35.    else  36.      str_unit := str_unit || str_char;  
37.      
38.      if (i_str_index = i_str_length) then  39.        v_ntb_allstring.extend(1);  
40.        v_ntb_allstring(v_ntb_allstring.count) := str_unit;   41.        str_unit := '';   42.      end if;   43.      
44.    end if;   45.    
46.    i_str_index := i_str_index + 1;  
47.  end loop;   48. 
49.  return(v_ntb_allstring);   50.end;  测试如下:

1.SQL> select * from table(f_get_unitstring('1aa|2cc|3bb','|'));   2.   
3.COLUMN_VALUE  
4.--------------------   5.1aa  
6.2cc  
7.3bb  
8.   
9.SQL>
以上解决方法仅供参数,欢迎交流。

再增加一种方法。

使用pipelined函数也能实现这个需求。但在此处性能优势不会体现出来,如果您碰巧碰到大数据量如亿级别的字符串拆分,该方法就能派上用场。

代码如下:

1.create or replace function f_get_unitstring(p_str_all in varchar2,  
2.                                            p_str_gap in varchar2)   3.  return t_ntb_allstring   4.  pipelined is  5.  --create or replace type t_ntb_allstring  is table of varchar2(20);   6.  v_ntb_allstring t_ntb_allstring;  
7.  str_unit varchar2(20);  
8.  str_char varchar2(1);  
9.  i_str_length number;  
10.  i_str_index  number;  
11.begin  12.  v_ntb_allstring := t_ntb_allstring();  
13.  i_str_length := length(p_str_all);  
14.  i_str_index := 1;  
15.  while (i_str_index 16.    str_char := substr(p_str_all, i_str_index, 1);    
17.    if (str_char = p_str_gap) then  18.      if (str_unit is not null) then  19.        --  v_ntb_allstring.extend(1);   20.        --  v_ntb_allstring(v_ntb_allstring.count) := str_unit;   21.        pipe row(str_unit);  
22.        str_unit := null;   23.      end if;   24.    else  25.      str_unit := str_unit || str_char;  
26.      if (str_unit is not null) then  27.        --  v_ntb_allstring.extend(1);   28.        --  v_ntb_allstring(v_ntb_allstring.count) := str_unit;   29.        pipe row(str_unit);  
30.        str_unit := null;   31.      end if;   32.    end if;   33.    i_str_index := i_str_index + 1;  
34.  end loop;   35.  --return(v_ntb_allstring);   36.end; 
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quatre outils de programmation assistés par IA recommandés Quatre outils de programmation assistés par IA recommandés Apr 22, 2024 pm 05:34 PM

Cet outil de programmation assistée par l'IA a mis au jour un grand nombre d'outils de programmation assistée par l'IA utiles à cette étape de développement rapide de l'IA. Les outils de programmation assistés par l'IA peuvent améliorer l'efficacité du développement, améliorer la qualité du code et réduire les taux de bogues. Ils constituent des assistants importants dans le processus de développement logiciel moderne. Aujourd'hui, Dayao partagera avec vous 4 outils de programmation assistés par l'IA (et tous prennent en charge le langage C#). J'espère que cela sera utile à tout le monde. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot est un assistant de codage IA qui vous aide à écrire du code plus rapidement et avec moins d'effort, afin que vous puissiez vous concentrer davantage sur la résolution de problèmes et la collaboration. Git

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Mar 24, 2024 am 11:27 AM

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Avec l’essor des réseaux sociaux, WeChat est devenu l’un des outils de communication indispensables dans la vie quotidienne des gens. Cependant, de nombreuses personnes peuvent rencontrer un problème : se connecter à plusieurs comptes WeChat en même temps sur le même téléphone mobile. Pour les utilisateurs de téléphones mobiles Huawei, il n'est pas difficile d'obtenir une double connexion WeChat. Cet article explique comment obtenir une double connexion WeChat sur les téléphones mobiles Huawei. Tout d'abord, le système EMUI fourni avec les téléphones mobiles Huawei offre une fonction très pratique : l'ouverture d'une double application. Grâce à la fonction de double ouverture de l'application, les utilisateurs peuvent simultanément

Comment annuler la suppression de l'écran d'accueil sur iPhone Comment annuler la suppression de l'écran d'accueil sur iPhone Apr 17, 2024 pm 07:37 PM

Vous avez supprimé quelque chose d'important de votre écran d'accueil et vous essayez de le récupérer ? Vous pouvez remettre les icônes d’applications à l’écran de différentes manières. Nous avons discuté de toutes les méthodes que vous pouvez suivre et remettre l'icône de l'application sur l'écran d'accueil. Comment annuler la suppression de l'écran d'accueil sur iPhone Comme nous l'avons mentionné précédemment, il existe plusieurs façons de restaurer cette modification sur iPhone. Méthode 1 – Remplacer l'icône de l'application dans la bibliothèque d'applications Vous pouvez placer une icône d'application sur votre écran d'accueil directement à partir de la bibliothèque d'applications. Étape 1 – Faites glisser votre doigt sur le côté pour trouver toutes les applications de la bibliothèque d'applications. Étape 2 – Recherchez l'icône de l'application que vous avez supprimée précédemment. Étape 3 – Faites simplement glisser l'icône de l'application de la bibliothèque principale vers le bon emplacement sur l'écran d'accueil. Voici le schéma d'application

Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Apr 07, 2024 am 09:10 AM

Le 3 mars 2022, moins d'un mois après la naissance de Devin, le premier programmeur d'IA au monde, l'équipe NLP de l'Université de Princeton a développé un agent SWE pour programmeur d'IA open source. Il exploite le modèle GPT-4 pour résoudre automatiquement les problèmes dans les référentiels GitHub. Les performances de l'agent SWE sur l'ensemble de tests du banc SWE sont similaires à celles de Devin, prenant en moyenne 93 secondes et résolvant 12,29 % des problèmes. En interagissant avec un terminal dédié, SWE-agent peut ouvrir et rechercher le contenu des fichiers, utiliser la vérification automatique de la syntaxe, modifier des lignes spécifiques et écrire et exécuter des tests. (Remarque : le contenu ci-dessus est un léger ajustement du contenu original, mais les informations clés du texte original sont conservées et ne dépassent pas la limite de mots spécifiée.) SWE-A

Apprenez à développer des applications mobiles en utilisant le langage Go Apprenez à développer des applications mobiles en utilisant le langage Go Mar 28, 2024 pm 10:00 PM

Didacticiel d'application mobile de développement du langage Go Alors que le marché des applications mobiles continue de croître, de plus en plus de développeurs commencent à explorer comment utiliser le langage Go pour développer des applications mobiles. En tant que langage de programmation simple et efficace, le langage Go a également montré un fort potentiel dans le développement d'applications mobiles. Cet article présentera en détail comment utiliser le langage Go pour développer des applications mobiles et joindra des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à commencer à développer leurs propres applications mobiles. 1. Préparation Avant de commencer, nous devons préparer l'environnement et les outils de développement. tête

Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Mar 24, 2024 pm 06:03 PM

Comment mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei Avec la popularité des logiciels sociaux et l'importance croissante accordée à la confidentialité et à la sécurité, la fonction de clonage WeChat est progressivement devenue le centre d'attention. La fonction de clonage WeChat peut aider les utilisateurs à se connecter simultanément à plusieurs comptes WeChat sur le même téléphone mobile, ce qui facilite la gestion et l'utilisation. Il n'est pas difficile de mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei. Il vous suffit de suivre les étapes suivantes. Étape 1 : Assurez-vous que la version du système de téléphonie mobile et la version de WeChat répondent aux exigences. Tout d'abord, assurez-vous que la version de votre système de téléphonie mobile Huawei a été mise à jour vers la dernière version, ainsi que l'application WeChat.

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Explication détaillée de la méthode de conversion du type int en chaîne en PHP Mar 26, 2024 am 11:45 AM

Explication détaillée de la méthode de conversion du type int en chaîne en PHP Dans le développement PHP, nous rencontrons souvent le besoin de convertir le type int en type chaîne. Cette conversion peut être réalisée de différentes manières. Cet article présentera en détail plusieurs méthodes courantes, avec des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Utilisez la fonction intégrée strval() de PHP. PHP fournit une fonction intégrée strval() qui peut convertir des variables de différents types en types de chaîne. Lorsque nous devons convertir le type int en type chaîne,

Comment répéter une chaîne dans le didacticiel de chaîne répétitive python_python Comment répéter une chaîne dans le didacticiel de chaîne répétitive python_python Apr 02, 2024 pm 03:58 PM

1. Ouvrez d’abord pycharm et accédez à la page d’accueil de pycharm. 2. Créez ensuite un nouveau script python, cliquez avec le bouton droit sur nouveau - cliquez sur fichier python. 3. Entrez une chaîne, code : s="-". 4. Ensuite, vous devez répéter les symboles de la chaîne 20 fois, code : s1=s*20 5. Entrez le code de sortie d'impression, code : print(s1). 6. Enfin, exécutez le script et vous verrez notre valeur de retour en bas : - répété 20 fois.

See all articles