how to determine the number of instances of a character in  string in Oracle

Posted on 2014-09-30
Last Modified: 2014-09-30
I want to determine how many of a certain letter in a string, e.g., MTWRF10,TR34,TBD

these are class periods, so M=Mon, T=Tues, R=Thurs, etc.

I want to determine how many M's, for example. I can't figure out how to do this in Sql, plus PL/SQL is probably better, no ?

I guess it would just be walking character by character and counting up, I suppose. The logic processes a day at a time, so as I process Monday, I would just walk through the string and count my M's (while ignoring TBD, etc.).

So if there is a Sql trick, please advise. If not, and you have a code snippet to address, that would be excellent.

(oracle is such a broad term, but that looks like the only topic that applies, I don't see PL/SQL).

(I also don't see where to assign points anymore . . . is everything now 500 points ???)
Question by:Gadsden Consulting
  • 4
  • 4
LVL 76

Accepted Solution

slightwv (䄆 Netminder) earned 500 total points
ID: 40352653
Single character?

length(string) - length(replace(string,'M'))

Author Comment

by:Gadsden Consulting
ID: 40352656
yes, single character.

very slick ! (I should have thought of that . . . )

Author Comment

by:Gadsden Consulting
ID: 40352670
just what the patient needed !

LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
ID: 40352693
Just thought of something.

You wanted to ignore TBD but what I posted will include the 'T' when looking for Tuesday.

Simple fix.  Just grab everything up to the first comma and do the length as above.

There are a few ways but try this:

If you are dealing with a LOT of data this one might be faster:
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
ID: 40352696
>>(I also don't see where to assign points anymore . . . is everything now 500 points ???)

Looks like I even missed that change.  I was just informed that everything is now 500 points.

Author Comment

by:Gadsden Consulting
ID: 40353534
thanks - I used replace TBD with ''

regexp_substr looks good but I don't understand what is going on there . . .

same with the substr / instr . . . not sure there.

I will try both out tomorrow.

yeah on the 500 points - grade inflation !
LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
ID: 40353597
The magic is [^,]+

This looks for 1 or more characters '+'  that is NOT '^'  in this list '[]' of characters.  In this case only one, a comma ','

>>same with the substr / instr . . . not sure there.

instr returns the position of the first comma.  Then I subtract one position to remove the comma (really unnecessary for the regex), then grabs the substring from position 1 to that number.

>>grade inflation !

Changes at corporate.

Author Comment

by:Gadsden Consulting
ID: 40353602
ok, thanks for the expln . . . I'll try tomorrow.

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

How to Unravel a Tricky Query Introduction If you browse through the Oracle zones or any of the other database-related zones you'll come across some complicated solutions and sometimes you'll just have to wonder how anyone came up with them.  …
This article describes how to use the timestamp of existing data in a database to allow Tableau to calculate the prior work day instead of relying on case statements or if statements to calculate the days of the week.
This video shows how to copy a database user from one database to another user DBMS_METADATA.  It also shows how to copy a user's permissions and discusses password hash differences between Oracle 10g and 11g.
This video shows setup options and the basic steps and syntax for duplicating (cloning) a database from one instance to another. Examples are given for duplicating to the same machine and to different machines

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now