如何在sql

时间:2016-07-11 13:35:45

标签: sql oracle plsql

Contract_Id包含

等数据
  

abc_rev4,abc_rev1,xxxxx_rev2,yyyyyyyy_rev4。

我只需要数据中的“rev”。

数据始终以单位数字结尾。

那么如何在substringright

的帮助下提取rev

PS:“v”在rev中的位置始终是最后一个但第一个字符

1 个答案:

答案 0 :(得分:-1)

这将从字符串中提取#include "ns3/core-module.h" #include "ns3/mobility-module.h" #include "ns3/applications-module.h" #include "ns3/point-to-point-module.h" #include "ns3/wifi-module.h" #include "ns3/network-module.h" #include "ns3/csma-module.h" #include "ns3/internet-module.h" #include "ns3/bridge-helper.h" #include "ns3/netanim-module.h" #include <vector> #include <stdint.h> #include <sstream> #include <fstream> using namespace ns3; int main (int argc, char *argv[]) { uint32_t nWifis = 2; uint32_t nStas = 2; bool sendIp = true; bool writeMobility = false; CommandLine cmd; cmd.AddValue ("nWifis", "Number of wifi networks", nWifis); cmd.AddValue ("nStas", "Number of stations per wifi network", nStas); cmd.AddValue ("SendIp", "Send Ipv4 or raw packets", sendIp); cmd.AddValue ("writeMobility", "Write mobility trace", writeMobility); cmd.Parse (argc, argv); NodeContainer backboneNodes; NetDeviceContainer backboneDevices; Ipv4InterfaceContainer backboneInterfaces; std::vector<NodeContainer> staNodes; std::vector<NetDeviceContainer> staDevices; std::vector<NetDeviceContainer> apDevices; std::vector<Ipv4InterfaceContainer> staInterfaces; std::vector<Ipv4InterfaceContainer> apInterfaces; InternetStackHelper stack; CsmaHelper csma; Ipv4AddressHelper ip; ip.SetBase ("192.168.0.0", "255.255.255.0"); backboneNodes.Create (nWifis); stack.Install (backboneNodes); backboneDevices = csma.Install (backboneNodes); double wifiX = 0.0; YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default (); wifiPhy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO); for (uint32_t i = 0; i < nWifis; ++i) { // calculate ssid for wifi subnetwork std::ostringstream oss; oss << "wifi-default-" << i; Ssid ssid = Ssid (oss.str ()); NodeContainer remoteHost; remoteHost.Create(1); Ptr<Node> remote=remoteHost.Get(0); Ptr<Node> apnode=backboneNodes.Get(i); PointToPointHelper p2p; p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); p2p.SetChannelAttribute ("Delay", StringValue ("2ms")); NetDeviceContainer p2pDevices = p2p.Install(apnode,remote); //setup remotenode stack.Install (remoteHost); // assign AP IP address to bridge, not wifi //Ipv4InterfaceContainer NodeContainer sta; NetDeviceContainer staDev; NetDeviceContainer apDev; Ipv4InterfaceContainer staInterface; Ipv4InterfaceContainer apInterface; Ipv4InterfaceContainer remoteInterface; MobilityHelper mobility; BridgeHelper bridge; WifiHelper wifi; WifiMacHelper wifiMac; YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default (); wifiPhy.SetChannel (wifiChannel.Create ()); sta.Create (nStas); mobility.SetPositionAllocator ("ns3::GridPositionAllocator", "MinX", DoubleValue (wifiX), "MinY", DoubleValue (0.0), "DeltaX", DoubleValue (5.0), "DeltaY", DoubleValue (5.0), "GridWidth", UintegerValue (1), "LayoutType", StringValue ("RowFirst")); // setup the AP. mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (remoteHost); mobility.Install (backboneNodes.Get (i)); wifiMac.SetType ("ns3::ApWifiMac", "Ssid", SsidValue (ssid)); apDev = wifi.Install (wifiPhy, wifiMac, backboneNodes.Get (i)); NetDeviceContainer bridgeDev; bridgeDev = bridge.Install (backboneNodes.Get (i), NetDeviceContainer (apDev, backboneDevices.Get (i))); // assign AP IP address to bridge, not wifi apInterface = ip.Assign (bridgeDev); remoteInterface = ip.Assign (p2pDevices); // setup the STAs stack.Install (sta); mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); mobility.Install (sta); wifiMac.SetType ("ns3::StaWifiMac", "Ssid", SsidValue (ssid), "ActiveProbing", BooleanValue (false)); staDev = wifi.Install (wifiPhy, wifiMac, sta); staInterface = ip.Assign (staDev); //creating udp applications UdpEchoServerHelper echoServer (9); ApplicationContainer serverApps = echoServer.Install(remoteHost.Get(0)); serverApps.Start (Seconds (1.0)); serverApps.Stop (Seconds (10.0)); UdpEchoClientHelper echoClient (remoteInterface.GetAddress(1), 9); echoClient.SetAttribute ("MaxPackets", UintegerValue (1)); echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0))); echoClient.SetAttribute ("PacketSize", UintegerValue (1024)); ApplicationContainer clientApps = echoClient.Install(sta.Get(0)); clientApps.Start (Seconds (2.0)); clientApps.Stop (Seconds (10.0)); // save everything in containers. staNodes.push_back (sta); apDevices.push_back (apDev); apInterfaces.push_back (apInterface); staDevices.push_back (staDev); staInterfaces.push_back (staInterface); wifiX += 20.0; } Ipv4GlobalRoutingHelper::PopulateRoutingTables (); /* Address dest; std::string protocol; if (sendIp) { dest = InetSocketAddress (staInterfaces[1].GetAddress (1), 1025); protocol = "ns3::UdpSocketFactory"; } else { PacketSocketAddress tmp; tmp.SetSingleDevice (staDevices[0].Get (0)->GetIfIndex ()); tmp.SetPhysicalAddress (staDevices[1].Get (0)->GetAddress ()); tmp.SetProtocol (0x807); dest = tmp; protocol = "ns3::PacketSocketFactory"; } OnOffHelper onoff = OnOffHelper (protocol, dest); onoff.SetConstantRate (DataRate ("500kb/s")); ApplicationContainer apps = onoff.Install (staNodes[0].Get (0)); apps.Start (Seconds (0.5)); apps.Stop (Seconds (3.0)); wifiPhy.EnablePcap ("wifi-wired-bridging", apDevices[0]); wifiPhy.EnablePcap ("wifi-wired-bridging", apDevices[1]);*/ if (writeMobility) { AsciiTraceHelper ascii; MobilityHelper::EnableAsciiAll (ascii.CreateFileStream ("wifi-wired-bridging.mob")); } AnimationInterface anim("edgecomp2.xml"); Simulator::Stop (Seconds (5.0)); Simulator::Run (); Simulator::Destroy (); } 的所有实例:

rev

<强>输出

SELECT REGEXP_REPLACE(
         'abc_rev4,abc_rev1,xxxxx_rev2,yyyyyyyy_rev4',
         '[^,]+(rev)\d(,|$)',
         '\1\2'
       ) AS revs
FROM   DUAL

如果您将每个列都放在一个单独的列中,那么:

REVS
---------------
rev,rev,rev,rev

<强>输出

WITH table_name ( value ) AS (
  SELECT 'abc_rev4' FROM DUAL UNION ALL
  SELECT 'abc_rev1' FROM DUAL UNION ALL
  SELECT 'xxxxx_rev2' FROM DUAL UNION ALL
  SELECT 'yyyyyyyy_rev4' FROM DUAL
)
SELECT value,
       SUBSTR( value, -4, 3 ) AS rev
FROM   table_name;