sql >> Databasteknik >  >> RDS >> Sqlserver

SUBSTRING vs LEFT i SQL SERVER

Det är ingen skillnad alls mellan left och substring eftersom left är översatt till substring i genomförandeplanen.

Till exempel:

select substring(col, 1, 2),
       left(col, 3)
from YourTable

kommer att se ut så här i genomförandeplanen

<DefinedValue>
  <ColumnReference Column="Expr1004" />
  <ScalarOperator ScalarString="substring([col],(1),(2))">
    <Intrinsic FunctionName="substring">
      <ScalarOperator>
        <Identifier>
          <ColumnReference Column="col" />
        </Identifier>
      </ScalarOperator>
      <ScalarOperator>
        <Const ConstValue="(1)" />
      </ScalarOperator>
      <ScalarOperator>
        <Const ConstValue="(2)" />
      </ScalarOperator>
    </Intrinsic>
  </ScalarOperator>
</DefinedValue>
<DefinedValue>
  <ColumnReference Column="Expr1005" />
  <ScalarOperator ScalarString="substring([col],(1),(3))">
    <Intrinsic FunctionName="substring">
      <ScalarOperator>
        <Identifier>
          <ColumnReference Column="col" />
        </Identifier>
      </ScalarOperator>
      <ScalarOperator>
        <Const ConstValue="(1)" />
      </ScalarOperator>
      <ScalarOperator>
        <Const ConstValue="(3)" />
      </ScalarOperator>
    </Intrinsic>
  </ScalarOperator>
</DefinedValue>


  1. MySql C++-anslutaren getString() fungerar inte korrekt, medan getInt fungerar perfekt

  2. MySQL:Få start- och sluttidsstämpel för varje dag

  3. Hur man anropar MySQL lagrad procedur i Python

  4. Hur kan jag ändra den här frågan med två Inner Joins så att den slutar ge dubbletter av resultat?