回答

收藏

如何在Oracle中计算字符串中的单词数?

技术问答 技术问答 144 人阅读 | 0 人回复 | 2023-09-13

我正在尝试计算SQL字符串中有多少个单词。
% C+ N2 z( _( a; N  N" t6 T* ZSelect  ("Hello To Oracle") from dual;
! G. L" t. x% l3 e6 H- a我想显示字数。在给定的示例中,尽管单词之间可能有多个空格,但将为3个单词。4 U( t; b  L# H8 j  M  k2 o! ]7 e4 c
                6 ?' z# w3 Z4 W* }/ U
解决方案:
# G9 o; s5 x! z% a                2 u% C1 d$ [% u2 n4 [* \: Q
: U. w( k" ^; v$ B: T5 P
! T, G# `2 n8 q8 }5 A& q1 G
                您可以使用与此类似的内容。这将获取字符串的长度,然后减去空格后减去字符串的长度。然后,将数字加到第一应该给你的单词数:
/ d3 x( N% @3 I& Q) S( `Select length(yourCol) - length(replace(yourcol, ' ', '')) + 1 NumbofWords3 R* J. M8 m0 l) R  R. W& q
from yourtable
# {+ D& Q, g& H( C. S  K参见带有演示的SQL Fiddle
( N8 p# y5 p$ Y' s, E, _4 g  T" v7 O如果您使用以下数据:) a1 K  p+ t" G) r) i* @4 `7 P2 i8 H- p
CREATE TABLE yourtable( x& \) J9 _6 ]/ K7 y
    (yourCol varchar2(15))
/ }$ ^4 x  s2 C  K;7 b# j% L# \" J7 F, I$ V) r' ^
INSERT ALL , \6 j3 v3 k: a: a; f% z
    INTO yourtable (yourCol)
+ @! i3 Y9 s( l' ?+ h, Y$ D         VALUES ('Hello To Oracle')
! [* J1 t' X1 _! V1 g  G' F    INTO yourtable (yourCol). z1 c1 A5 @2 e( L
         VALUES ('oneword')
, `/ D" B0 J/ e( N6 [' }$ b6 a    INTO yourtable (yourCol)
  }# D( g0 w/ f2 r7 b( `         VALUES ('two words')
9 A+ Q+ i" q* rSELECT * FROM dual# O' K% H8 Y4 v" Y9 U8 ?) m
;
7 \4 ~: T" X' _5 z1 O. Z% U和查询:$ i' d6 B/ W( w) m
Select yourcol,
8 ]0 c9 b1 T! Y8 r3 T8 W  s1 x  length(yourCol) - length(replace(yourcol, ' ', '')) + 1 NumbofWords- j/ o  M' ]; X1 I5 A. Z2 h
from yourtable
4 {6 j' R5 ?8 T  T结果是:, j" w/ R; {! B* {# C
|         YOURCOL | NUMBOFWORDS |
3 h, I9 ?9 z9 H9 ~2 ^) |: x8 s---------------------------------
- B/ S' c5 D, Y  v| Hello To Oracle |           3 |" |# x3 h4 V% _6 D, b: A! c$ r4 \
|         oneword |           1 |# M, p, [9 F$ T. X. f0 ~6 Y, Y
|       two words |           2 |
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则