In mysql, substring query not working properly if strings are repeating











up vote
1
down vote

favorite












i want to replace last 5 digits of a phone number.
i wrote this query :



update users
set
mobile = Replace(mobile, SUBSTRING(mobile, 6, 5), 'xxxxx')
where
email="xxxxx@gmail.com"


It is working fine for numbers like 8100343397
But for numbers like 9090909090 it is replacing from the 2nd digit instead of 6th digit.



I want to know the reason why.



I know it will work with left and concat.



Please just tell me why the above is not working if strings are repeating.










share|improve this question




























    up vote
    1
    down vote

    favorite












    i want to replace last 5 digits of a phone number.
    i wrote this query :



    update users
    set
    mobile = Replace(mobile, SUBSTRING(mobile, 6, 5), 'xxxxx')
    where
    email="xxxxx@gmail.com"


    It is working fine for numbers like 8100343397
    But for numbers like 9090909090 it is replacing from the 2nd digit instead of 6th digit.



    I want to know the reason why.



    I know it will work with left and concat.



    Please just tell me why the above is not working if strings are repeating.










    share|improve this question


























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      i want to replace last 5 digits of a phone number.
      i wrote this query :



      update users
      set
      mobile = Replace(mobile, SUBSTRING(mobile, 6, 5), 'xxxxx')
      where
      email="xxxxx@gmail.com"


      It is working fine for numbers like 8100343397
      But for numbers like 9090909090 it is replacing from the 2nd digit instead of 6th digit.



      I want to know the reason why.



      I know it will work with left and concat.



      Please just tell me why the above is not working if strings are repeating.










      share|improve this question















      i want to replace last 5 digits of a phone number.
      i wrote this query :



      update users
      set
      mobile = Replace(mobile, SUBSTRING(mobile, 6, 5), 'xxxxx')
      where
      email="xxxxx@gmail.com"


      It is working fine for numbers like 8100343397
      But for numbers like 9090909090 it is replacing from the 2nd digit instead of 6th digit.



      I want to know the reason why.



      I know it will work with left and concat.



      Please just tell me why the above is not working if strings are repeating.







      sql mysqli






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 19 at 12:04









      Rajesh Pandya

      1,2912819




      1,2912819










      asked Nov 19 at 11:40









      Suborno Samanta

      63




      63
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          2
          down vote













          Why are you using replace()?



          update users
          set mobile = concat(left(model, length(mobile) - 5), 'xxxxx')
          where email = 'xxxxx@gmail.com';


          Just take all but the last five characters and then append the new values that you want.






          share|improve this answer

















          • 2




            Gordon is correct, but to explain what you are seeing - you are calling REPLACE and passing in a string of characters that it will look for. Despite you passing in the last 5 digits (09090) of the phone number, since it is a repeat of the first 5 characters (starting at the second digit: 09090) it will replace that first occurrence instead of the last.
            – gmiley
            Nov 19 at 11:45













          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53373867%2fin-mysql-substring-query-not-working-properly-if-strings-are-repeating%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          2
          down vote













          Why are you using replace()?



          update users
          set mobile = concat(left(model, length(mobile) - 5), 'xxxxx')
          where email = 'xxxxx@gmail.com';


          Just take all but the last five characters and then append the new values that you want.






          share|improve this answer

















          • 2




            Gordon is correct, but to explain what you are seeing - you are calling REPLACE and passing in a string of characters that it will look for. Despite you passing in the last 5 digits (09090) of the phone number, since it is a repeat of the first 5 characters (starting at the second digit: 09090) it will replace that first occurrence instead of the last.
            – gmiley
            Nov 19 at 11:45

















          up vote
          2
          down vote













          Why are you using replace()?



          update users
          set mobile = concat(left(model, length(mobile) - 5), 'xxxxx')
          where email = 'xxxxx@gmail.com';


          Just take all but the last five characters and then append the new values that you want.






          share|improve this answer

















          • 2




            Gordon is correct, but to explain what you are seeing - you are calling REPLACE and passing in a string of characters that it will look for. Despite you passing in the last 5 digits (09090) of the phone number, since it is a repeat of the first 5 characters (starting at the second digit: 09090) it will replace that first occurrence instead of the last.
            – gmiley
            Nov 19 at 11:45















          up vote
          2
          down vote










          up vote
          2
          down vote









          Why are you using replace()?



          update users
          set mobile = concat(left(model, length(mobile) - 5), 'xxxxx')
          where email = 'xxxxx@gmail.com';


          Just take all but the last five characters and then append the new values that you want.






          share|improve this answer












          Why are you using replace()?



          update users
          set mobile = concat(left(model, length(mobile) - 5), 'xxxxx')
          where email = 'xxxxx@gmail.com';


          Just take all but the last five characters and then append the new values that you want.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 19 at 11:42









          Gordon Linoff

          750k34286393




          750k34286393








          • 2




            Gordon is correct, but to explain what you are seeing - you are calling REPLACE and passing in a string of characters that it will look for. Despite you passing in the last 5 digits (09090) of the phone number, since it is a repeat of the first 5 characters (starting at the second digit: 09090) it will replace that first occurrence instead of the last.
            – gmiley
            Nov 19 at 11:45
















          • 2




            Gordon is correct, but to explain what you are seeing - you are calling REPLACE and passing in a string of characters that it will look for. Despite you passing in the last 5 digits (09090) of the phone number, since it is a repeat of the first 5 characters (starting at the second digit: 09090) it will replace that first occurrence instead of the last.
            – gmiley
            Nov 19 at 11:45










          2




          2




          Gordon is correct, but to explain what you are seeing - you are calling REPLACE and passing in a string of characters that it will look for. Despite you passing in the last 5 digits (09090) of the phone number, since it is a repeat of the first 5 characters (starting at the second digit: 09090) it will replace that first occurrence instead of the last.
          – gmiley
          Nov 19 at 11:45






          Gordon is correct, but to explain what you are seeing - you are calling REPLACE and passing in a string of characters that it will look for. Despite you passing in the last 5 digits (09090) of the phone number, since it is a repeat of the first 5 characters (starting at the second digit: 09090) it will replace that first occurrence instead of the last.
          – gmiley
          Nov 19 at 11:45




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53373867%2fin-mysql-substring-query-not-working-properly-if-strings-are-repeating%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Paul Cézanne

          UIScrollView CustomStickyHeader Resize height generates problems when scroll is too fast

          Angular material date-picker (MatDatepicker) auto completes the date on focus out